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;
}