Qt QCalendarWidget QSS 样式

标签 qt qt4 qtstylesheets

我知道不支持 QCalendarWidget QSS 样式,但有谁知道更改 1 部分颜色的一些解决方法QCalendarWidget 的 2? (1 部分为浅蓝色,2 部分为白色)

enter image description here

谢谢!

最佳答案

我检查了QCalendarWidget source code并找到了解决方案。

QCalendarWidget 内部有一个模型和一个显示日期的 View 。 QCalendarModel 有一个 formatForCell(int, int) 函数,它返回给定单元格的 QTextCharFormat。返回格式是合并 QCalendarView 调色板数据的结果,当天的格式(星期六和星期日以红色显示)和当前日期的格式,可以使用 QCalendarWidget::设置: setDateTextFormat 函数。

实际上一个item的背景是:

format.setBackground(pal.brush(cg, header ? QPalette::AlternateBase : QPalette::Base));
  • palQCalendarView的调色板;
  • cg 是一个 color group ;
  • header 当当前单元格是标题单元格时为真(示例中的第 1 部分)

因此,您只需将自定义调色板设置为内部 QCalendarView。在源代码中我们可以发现 QCalendarView 对象有一个我们可以使用的名称“qt_calendar_calendarview”:

QCalendarWidget *c = new QCalendarWidget;

QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
    QPalette pal = view->palette();
    pal.setColor(QPalette::Base, Qt::red);
    pal.setColor(QPalette::AlternateBase, Qt::green);
    view->setPalette(pal);
}

在我的示例中,第 1 部分为红色,第 2 部分为绿色。 此外,您可以为每个 color group 设置颜色您的调色板在事件、非事件等时获取您喜欢的小部件。

关于Qt QCalendarWidget QSS 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668344/

相关文章:

c++ - Qt 中 GtkSpinner 的等价物?

c++ - Qt 中的 const char* 到 LPCWSTR

python - 在主窗口 PyQt 中处理关闭按钮的正确方法,(红色 "X")

c++ - 在QML插件的QGLWidget上渲染QImage

qt - 摆脱 QListView 项目上的 Qt 虚线轮廓

c++ - 如何删除Qtreewidget中的虚线分支

c++ - Qt:如何为 QLabel 创建清晰可见的发光效果? (例如使用 QGraphicsDropShadowEffect)

c++ - 如何在 Qt 中使用 QGeopath 清除 Mappolyline

qt - 更改 QRubberBand 的颜色

python - 为自定义 QWidget 设置背景颜色