Смотри в приложении Qt Demo в составе Qt в разделе Widgets есть примеры Styles и Stylehsheet. Пример Styles более интересен. Но с QStyles не работал. Все что связано с setStylesheet мне кажется более просто. Надо всего лишь создать файл, в котором (как в css для вебстраниц) указать набор свойств для рисования виджетов и в конструкторе главного окна его загрузить.
Эти свойства примененные для главного окна могут применяться не только к главному окну, но и к его внутренним виджетам (как все это делается написано в доке).
Ну или как только что посмотрел у QApplication есть слот setStyleSheet. Тогда похоже не надо будет загружать стили в конструкторе каждого окна.
QFile file("stylesheet.qss");
if (file.open(QFile::ReadOnly | QFile::Text))
{
QTextStream in(&file);
setStyleSheet(in.readAll());
}
К примеру содержимое такого файла (основан на тех же примерах)
QPushButton#SideBar_MainTab {
background-image: url("Pictures/Side Bar/Button.png");
border: 2px solid #f6f7fa;
border-radius: 6px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 rgb(246,247,250), stop: 1 rgb(218,219,222));
min-width: 200px;
}
QPushButton:hover:!checked#SideBar_MainTab {
background-image: url("Pictures/Side Bar/Button Selected.png");
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 rgb(250,251,252), stop: 1 rgb(223,224,227));
}
QPushButton:pressed#SideBar_MainTab {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
}
QPushButton:checked#SideBar_MainTab {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
border-color: rgb(220, 220, 220);
}