qt - 如何在 QDateEdit 或 QCalendarWidget 中更改非活动天数的颜色
问题描述
请帮帮我,我的朋友们!我需要日历小部件看起来像这样: 想要的日历
但我有一个问题。我只得到这个: 我的日历
我需要这样做:超出范围的日期(minimalDate、maximalDate)应着色为非活动日期(活动日期的主颜色为黑色,例如,非活动日期的主颜色为灰色)。对不起,我的英语不好:)
我正在尝试这样写:
/* activel days */
QCalendarWidget QAbstractItemView:enabled
{
font-size:24px;
color: rgb(180, 180, 180);
background-color: black;
selection-background-color: rgb(64, 64, 64);
selection-color: rgb(0, 255, 0);
}
/* days inactive */
QCalendarWidget QAbstractItemView:disabled { color: rgb(64, 64, 64); }
解决方案
您应该创建自己的自定义日历类,该类派生自QCalendarWidget
并重新实现void QCalendarWidget::paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
方法。
所以让我们在Calendar.h中创建一个Calendar
类:
#include <QCalendarWidget>
class Calendar : public QCalendarWidget
{
public:
Calendar(QWidget *parent = nullptr);
void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const override;
};
在Calendar.cpp中实现这个类:
#include "Calendar.h"
#include <QPainter>
Calendar::Calendar(QWidget *parent)
: QCalendarWidget(parent)
{}
void Calendar::paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
{
// change color for dates before current date
if (date < QDate::currentDate())
{
painter->save();
// set color for the text
painter->setPen(QColor(64, 64, 64));
// draw text with new color
painter->drawText(rect, Qt::TextSingleLine | Qt::AlignCenter, QString::number(date.day()));
// here you can draw anything you want
painter->restore();
} else {
// draw cell in standard way
QCalendarWidget::paintCell(painter, rect, date);
}
}
之后,如果您使用的是Qt Creator,您可以QCalendarWidget
从左侧栏中添加到您的小部件,右键单击它并打开“推广到”菜单。添加Calendar
到升级类名称并检查头文件是否正确。点击添加以添加Calendar
到提升的类列表,最后点击提升将QCalendarWidget
您的表单转换为Calendar
.
之后我得到以下小部件(对不起俄语):
推荐阅读
- javascript - 附加html中的d3按钮回调
- ruby-on-rails - URI::InvalidURIError: bad URI(is not URI?) when deploying HEROKU app with multiple databases
- android - 无法从 ZXing 调用 IntentIntegrator 类?
- tsql - 构建时出现 SSDT 错误:应为 XML,但遇到的是 JSON
- linux - 如何从 GDB 读取二进制内存转储?
- javascript - 查找字符串 Javascript 的索引
- xml - 使用哪个编辑器制作 .agss 文件
- java - Java 对象重载
- href - 在 url 中引用 kml 字段
- java - 关于运算符或的 java 性能问题