- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 QList<QDate>
有事件的日期,我想在 QCalendarWidget
上突出显示这些日期,希望通过图像可以改变单元格的颜色。
我可能在我的代码中犯了一个新手错误......
我从 ( Here ) 修改的这段代码应该使 QCalendarWidget
用红色边框绘制日期,但它不会...
主窗口.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_manager = new CalendarManager(ui->calendarWidget);
setupConnections();
on_calendarWidget_clicked(QDate::currentDate());
}
/* GUI button behavior */
日历管理器.h
#ifndef CALENDARMANAGER_H
#define CALENDARMANAGER_H
#include <QCalendarWidget>
#include <QStringList>
#include <QBrush>
#include <QColor>
#include <QFile>
#include <QList>
#include <QDate>
#include <QPen>
class CalendarManager : public QCalendarWidget
{
Q_OBJECT
Q_PROPERTY(QColor color READ getColor WRITE setColor)
public:
CalendarManager(QWidget *parent = 0);
~CalendarManager();
void setColor(const QColor &color);
QColor getColor() const;
protected:
virtual void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const;
private:
struct calendarEvent
{
QDate date;
QString name;
};
QList<calendarEvent> m_events;
QList<QDate> m_dates;
QPen m_outlinePen;
QBrush m_transparentBrush;
void getDates();
};
#endif // CALENDARMANAGER_H
日历管理器.cpp
#include <QPainter>
#include "calendarmanager.h"
CalendarManager::CalendarManager(QWidget *parent)
: QCalendarWidget(parent)
{
m_outlinePen.setColor(Qt::red);
m_transparentBrush.setColor(Qt::transparent);
getDates();
}
CalendarManager::~CalendarManager()
{
}
void CalendarManager::setColor(const QColor &color)
{
m_outlinePen.setColor(color);
}
QColor CalendarManager::getColor() const
{
return ( m_outlinePen.color() );
}
void CalendarManager::paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
{
QCalendarWidget::paintCell(painter, rect, date);
if( m_dates.contains(date) ) {
painter->setPen(m_outlinePen);
painter->setBrush(m_transparentBrush);
painter->drawRect(rect.adjusted(0, 0, -1, -1));
}
}
void CalendarManager::getDates()
{
QFile file("/data/events.csv");
if(!file.open(QIODevice::ReadOnly)) {
//Error code
}
QList<QByteArray> wordList;
QDate date;
QString name;
calendarEvent e;
while(!file.atEnd()) {
QByteArray line = file.readLine();
wordList = line.split(',');
date = QDate::fromString( wordList.first(), "dd/MM/yyyy" );
name = wordList.last();
e.date = date;
e.name = name;
m_events.append(e);
m_dates.append(date);
}
file.close();
}
最佳答案
问题是,在创建 m_manager
时,即使您传递了父 ui->calendarWidget
,您也没有在 GUI 中包含它。
您应该做的是提升您的 GUI 以使用该小部件,您可以从设计 View 轻松地使用它。
Promote to
:QCalendarWidget
,提升的类名:CalendarManager
和头文件: 日历管理器.h
输出截图:
注意:没有必要创建m_manager
,如果我们看ui->calendarwidget
是CalendarManager的一个实例
。
关于c++ - QCalendarWidget - 如何突出显示日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134809/
我正在尝试使用QCalendarWidget,但它没有按预期在用户界面中呈现。我看到的示例显示了类似日历选择器的对象,但在我的例子中,我得到了一个非常小的字段渲染。用户界面如下所示: 这是我第一次使用
我有一个 QList有事件的日期,我想在 QCalendarWidget 上突出显示这些日期,希望通过图像可以改变单元格的颜色。 我可能在我的代码中犯了一个新手错误...... 我从 ( Here )
我有一个 QCalendarWidget 并且一个月中的某些天是彩色的(例如假期是红色的)。当我选择一个有颜色的日子时,选择会清除颜色,我看不到它的原始颜色。但是当我取消选择那一天时 - 颜色又回来了
我想要在按下按钮时弹出的视觉元素,并允许用户选择日期和时间。它在 Qt 中是否像 QCalendarWidget 这样的可视化小部件,但也有时间? 最佳答案 您在哪里看到过此类弹出窗口? 希望它能解决
我正在尝试将 QCalendarWidget 与启用或禁用日期(不仅是范围日期)一起使用,但它看起来不可能(https://bugreports.qt.io/browse/QTBUG-198)。 您知
如何在单击 QCalendarWidget 的年份选项时触发鼠标单击事件。 点击年(2012),我想使用 pyqt5 打印一些文本谁能帮忙。提前致谢/ 最佳答案 首先是使用findChildren获取
我的目标是禁止用户在 QCalendarWidget 中单击非当前月份的日期,因此我对该小部件进行了子类化以实现此目的。到目前为止,我可以让那些日子根本不渲染任何文本(很棒)。这是代码: class
我正在使用 Python 制作一个基于日历的应用程序。为此,我使用 PyQt5 的 QCalendarWidget()。但是,我无法正确获取所选日期。当我运行下面的代码时,无论我单击哪一天,它都会打印
我知道不支持 QCalendarWidget QSS 样式,但有谁知道更改 1 和 部分颜色的一些解决方法QCalendarWidget 的 2? (1 部分为浅蓝色,2 部分为白色) 谢谢! 最佳答
我需要修改 QCalenderWidget 中的委托(delegate)。我想在用户选择特定日期时更改单元格的背景颜色。 我想要一个简单的例子。 最佳答案 您可以使用 QWidget::setStyl
这是标准日历 我想让这个日历中从明天开始的日期显示为灰色,而我们不能选择从明天开始的日期,我们只能从过去到今天。这可能吗? 这是我的代码: MyClass::MyClass(QcgDatabase *
我希望用户能够在 QCalendarWidget 中选择星期一、星期二、星期三、星期四或星期五(工作日)。但不是周六或周日。 (周末) 此功能可用于 QCalendarWidget 吗? 如果不是,我
我在我的应用程序中使用 QCalendarWidget,我重载了 updateCells 方法以在每个满足特定条件的日期上放置红色背景。 我的问题是我不知道如何获取日历中显示的第一个日期(不是月份的第
我想在 QCalendarWidget 中选择一天并将这一天的文本保存在数据库中。现在我正在寻找一个好的保存策略。目前我正在使用 QTextEdit::textChanged()-Signal,但当然
我想输入p.drawText (r.x () + 10, r.y () + 33, '{}/{}'.Format ('tset1', 'test2') 所选 QCalendarWidget 日期的条件
我目前在 Ubuntu 11.04 Natty Narwhal 中使用 Eclipse 3.5.2 和 Qt Jambi 4.7.2 我有一个当前扩展 QCalendarWidget 的类。我正在尝试
我正在编写自己的 QCalendarWidget 实现。我希望日期可以选择,但我不想看到默认选择矩形。它看起来像这样: 还有我的代码: in constructor: setSelectionMode
晚上好,我正在尝试生成一个如图所示的日历: 到目前为止,我通过 QSS 取得的成果是: 这就是我用过的QSS QCalendarWidget QAbstractItemView { selection
我目前正在制作一个带有日历的待办事项应用程序。每当用户在特定日期发生事件时,左上角就会出现一个红色圆圈。每当用户双击日期时,我希望它显示一个新窗口,其中包含当天事件的信息。但是,我无法将信息存储到每个
我想创建一个设置小部件,我可以在其中选择一个日期。 因为创建 3 个 QLineEdits 以使用 QDate(int year, int month, int day) 调用 QDate-Const
我是一名优秀的程序员,十分优秀!