qt QDateEdit qss

本文详细介绍了如何使用Qt的QCalendarWidget组件,并通过QSS样式表自定义其外观。从组件的内部结构解析开始,逐步展示了如何针对不同子控件应用样式,包括背景颜色、字体大小、图标及按钮尺寸等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt中DateTimeEdit等时间日期控件设置显示格式

QCalendarWidget 是一个比较复杂的 widget,由几个 QToolButton, QSpinBox, QMenu, QTableView 等控件组成,要修改其样式的时候应该怎么办呢?
MainWidget::MainWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MainWidget) {
    ui->setupUi(this);
    dumpStructure(ui->calendarWidget, 0);
}

MainWidget::~MainWidget() {
}

void MainWidget::dumpStructure(const QObject *obj, int spaceCount) {
    qDebug() << QString("%1%2 : %3")
                .arg("", spaceCount)
                .arg(obj->metaObject()->className())
                .arg(obj->objectName());

    QObjectList list = obj->children();

    foreach (QObject * child, list) {
        dumpStructure(child, spaceCount + 4);
    }
}

使用函数 dumpStructure() 打印出 QCalendarWidget 的树形组成结构,输出如下:

"QCalendarWidget : calendarWidget"
"    QVBoxLayout : "
"    QCalendarModel : "
"    QCalendarView : qt_calendar_calendarview"
"        QWidget : qt_scrollarea_viewport"
"        QWidget : qt_scrollarea_hcontainer"
"            QScrollBar : "
"            QBoxLayout : "
"        QWidget : qt_scrollarea_vcontainer"
"            QScrollBar : "
"            QBoxLayout : "
"        QStyledItemDelegate : "
"        QHeaderView : "
"            QWidget : qt_scrollarea_viewport"
"            QWidget : qt_scrollarea_hcontainer"
"                QScrollBar : "
"                QBoxLayout : "
"            QWidget : qt_scrollarea_vcontainer"
"                QScrollBar : "
"                QBoxLayout : "
"            QItemSelectionModel : "
"        QHeaderView : "
"            QWidget : qt_scrollarea_viewport"
"            QWidget : qt_scrollarea_hcontainer"
"                QScrollBar : "
"                QBoxLayout : "
"            QWidget : qt_scrollarea_vcontainer"
"                QScrollBar : "
"                QBoxLayout : "
"            QItemSelectionModel : "
"        QTableCornerButton : "
"        QItemSelectionModel : "
"    QWidget : qt_calendar_navigationbar"
"        QPrevNextCalButton : qt_calendar_prevmonth"
"        QPrevNextCalButton : qt_calendar_nextmonth"
"        QToolButton : qt_calendar_monthbutton"
"            QMenu : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"                QAction : "
"        QToolButton : qt_calendar_yearbutton"
"        QSpinBox : qt_calendar_yearedit"
"            QLineEdit : qt_spinbox_lineedit"
"                QWidgetLineControl : "
"            QValidator : qt_spinboxvalidator"
"        QHBoxLayout : "
"    QCalendarDelegate : "
"    QCalendarTextNavigator : "

知道了每个 widget 后,用 QSS 修改 QCalendarWidget 的样式了。

#qt_calendar_calendarview {
    background: white;
}

#qt_calendar_navigationbar {
    background: rgba(215, 215, 215, 255);
}

QToolButton {
    icon-size: 30px, 30px;
    width: 80px;
    height: 30px;
}

QToolButton#qt_calendar_prevmonth {
    background: green;
    width: 40px;
    qproperty-icon: url(:/resources/tabset-left.png);
}

QToolButton#qt_calendar_nextmonth {
    background: blue;
    width: 40px;
    qproperty-icon: url(:/resources/tabset-right.png);
}

QToolButton#qt_calendar_monthbutton {
    background: yellow;
    padding-right: 20px;
}

QToolButton#qt_calendar_yearbutton {
    background: magenta;
}

QToolButton#qt_calendar_monthbutton::menu-indicator{
    subcontrol-origin: padding;
    subcontrol-position: center right;
    right: 3px;
    width: 10px;
}

QAbstractItemView {
    color: black;
    selection-color: white;
    selection-background-color: rgb(255, 174, 0);
    font: 15px;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值