Russian Qt Forum

Qt => QSS => Тема начата: ruzik от Февраль 12, 2011, 16:28



Название: Темы
Отправлено: ruzik от Февраль 12, 2011, 16:28
Здравствуйте, а есть ли в qt, возможность изменять стиль не отдельного элемента(setStyleSheet), а всего приложения сразу, этакие темы


Название: Re: Темы
Отправлено: merke от Февраль 12, 2011, 16:50
Qt Demo -> Widgets -> Style Sheet


Название: Re: Темы
Отправлено: ruzik от Февраль 12, 2011, 17:41
А не можете ли дать пример использования


Название: Re: Темы
Отправлено: merke от Февраль 12, 2011, 17:44
Так там и есть пример использования


Название: Re: Темы
Отправлено: ruzik от Февраль 12, 2011, 21:32
В ассистенте есть лишь это на styleSheet
QLineEdit { background: yellow }
 QCheckBox { color: red }
А это скорее относится к setStyleSheet, вот я и спрашиваю


Название: Re: Темы
Отправлено: kdm от Февраль 12, 2011, 21:54
Смотри в приложении 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);
}