QSS

Поделись знанием:
Перейти к: навигация, поиск

QSS (англ. Qt Style Sheets — таблицы стилей Qt) — это механизм, позволяющий настраивать внешний вид виджетов библиотеки Qt.





Описание

QSS в значительной части был вдохновлён каскадными таблицами стилей CSS для HTML, вследствие чего имеет похожий синтаксис. В частности, как и в CSS, в QSS можно изменять форму, цвета, прозрачность элемента, а также визуальную реакцию на события (такие, как нажатие кнопки). Стили можно присоединять как к отдельному компоненту так и к ко всему приложению, с помощью метода ::setStyleSheet(), имеющегося как у отдельных виджетов, так и у объекта QApplication<tt>.

Qt Designer предоставляет возможность интеграции QSS-стилей, что упрощает их тестирование и разработку. Также, при запуске приложения на Qt, можно применить к нему таблицу стилей, воспользовавшись синтаксисом командной строки вида:

MyApp -stylesheet MyStyle.qss

Поддержка QSS появилась в Qt начиная с версии 4.3[1], однако до версии 4.5 этот механизм не работал на платформе Mac OS X

Механизм QSS позволяет полностью отделить визуальный дизайн от разработки приложения и привлечь к стилизации приложения веб-дизайнеров. Наряду с подсистемами QtScript и QML — это один из шагов по сближению Qt-программирования с web-разработкой.

Особенности QSS

В качестве селекторов QSS используются прежде всего имена классов виджетов Qt. Можно также конкретизировать их именем конкретного экземпляра виджета, например <tt>QPushButton#okButton а также значениями тех или иных атрибутов (QPushButton[x="0"][y="0"]). Как и в CSS можно искать элемент ( в случае QSS — виджет), вложенный в виджет указанного типа, например QFrame > QDial (прямой потомок) или QFrame QDial (допустимы промежуточные уровни вложенности).

Примеры кода на QSS

Устанавливает радиус границы для классов QPlainTextEdit,QSpinBox,QTimeEdit,QLineEdit:

QPlainTextEdit,QSpinBox,QTimeEdit,QLineEdit { border-radius: 5;}

Проверяет значение свойства editable класса QComboBox, если условие выполняется то устанавливает изображение из файла ресурсов, и ширину границы:

 QComboBox[editable="true"]{
    border-image: url(:/Components/pictures/frame.png) 4;
    border-width: 3;
}

Напишите отзыв о статье "QSS"

Примечания

  1. [labs.qt.nokia.com/2007/06/01/qt-43-and-style-sheets/ Qt 4.3 and Style Sheets] (англ.), Qt Labs — Developer Blogs

Литература

  • Жасмин Бланшет, Марк Саммерфилд. Гл. 19. Настройка диалога с пользователем. Использование таблиц стилей Qt // Qt4: Программирование GUI на C++ = C++ GUI Programming with Qt 4. — Издание второе, дополненное. — Москва: КУДИЦ-ПРЕСС, 2008. — С. 447-461. — 718 с. — 2 500 экз, экз. — ISBN 978-5-91136-059-7.
  • Макс Шлее. Гл. 26. Элементы со стилем. Использование каскадных стилей документа // Qt 4.5. Профессиональное программирование на С++. — Санкт-Петербург: БХВ, 2010. — С. 433-440. — 896 с. — 1 500 экз, экз. — ISBN 978-5-9775-0398-3.

Ссылки

  • [web.archive.org/web/20101001031451/doc.trolltech.com/4.7/stylesheet.html Qt 4.7: Qt Style Sheets] (англ.) — официальная документация
  • [doc.crossplatform.ru/qt/4.6.x/stylesheet.html Qt 4.6: Таблицы стилей Qt] (рус.) — перевод оф. документации
  • [doc.qt.nokia.com/qq/qq20-qss.html Custom Looks using Qt 4.2 Style Sheets], Qt Quarterly, Issue 20 · Q4 2006
  • [thesmithfam.org/blog/2009/09/10/qt-stylesheets-tutorial/ Qt Stylesheets Tutorial] (англ.), [thesmithfam.org/blog/2009/09/17/qt-stylesheets-button-bar-tutorial/ Qt Stylesheets Button Bar Tutorial] (англ.), [thesmithfam.org/blog/2009/09/18/qt-sidebar-tutorial/ Qt Stylesheet Sidebar Tutorial] (англ.) Dave Smith’s Blog

Отрывок, характеризующий QSS

– Vous changerez, n'est ce pas? [Вы перемените, не правда ли?] – сказала Лиза, и когда княжна Марья ничего не ответила, Лиза вышла из комнаты.
Княжна Марья осталась одна. Она не исполнила желания Лизы и не только не переменила прически, но и не взглянула на себя в зеркало. Она, бессильно опустив глаза и руки, молча сидела и думала. Ей представлялся муж, мужчина, сильное, преобладающее и непонятно привлекательное существо, переносящее ее вдруг в свой, совершенно другой, счастливый мир. Ребенок свой, такой, какого она видела вчера у дочери кормилицы, – представлялся ей у своей собственной груди. Муж стоит и нежно смотрит на нее и ребенка. «Но нет, это невозможно: я слишком дурна», думала она.
– Пожалуйте к чаю. Князь сейчас выйдут, – сказал из за двери голос горничной.
Она очнулась и ужаснулась тому, о чем она думала. И прежде чем итти вниз, она встала, вошла в образную и, устремив на освещенный лампадой черный лик большого образа Спасителя, простояла перед ним с сложенными несколько минут руками. В душе княжны Марьи было мучительное сомненье. Возможна ли для нее радость любви, земной любви к мужчине? В помышлениях о браке княжне Марье мечталось и семейное счастие, и дети, но главною, сильнейшею и затаенною ее мечтою была любовь земная. Чувство было тем сильнее, чем более она старалась скрывать его от других и даже от самой себя. Боже мой, – говорила она, – как мне подавить в сердце своем эти мысли дьявола? Как мне отказаться так, навсегда от злых помыслов, чтобы спокойно исполнять Твою волю? И едва она сделала этот вопрос, как Бог уже отвечал ей в ее собственном сердце: «Не желай ничего для себя; не ищи, не волнуйся, не завидуй. Будущее людей и твоя судьба должна быть неизвестна тебе; но живи так, чтобы быть готовой ко всему. Если Богу угодно будет испытать тебя в обязанностях брака, будь готова исполнить Его волю». С этой успокоительной мыслью (но всё таки с надеждой на исполнение своей запрещенной, земной мечты) княжна Марья, вздохнув, перекрестилась и сошла вниз, не думая ни о своем платье, ни о прическе, ни о том, как она войдет и что скажет. Что могло всё это значить в сравнении с предопределением Бога, без воли Которого не падет ни один волос с головы человеческой.


Когда княжна Марья взошла в комнату, князь Василий с сыном уже были в гостиной, разговаривая с маленькой княгиней и m lle Bourienne. Когда она вошла своей тяжелой походкой, ступая на пятки, мужчины и m lle Bourienne приподнялись, и маленькая княгиня, указывая на нее мужчинам, сказала: Voila Marie! [Вот Мари!] Княжна Марья видела всех и подробно видела. Она видела лицо князя Василья, на мгновенье серьезно остановившееся при виде княжны и тотчас же улыбнувшееся, и лицо маленькой княгини, читавшей с любопытством на лицах гостей впечатление, которое произведет на них Marie. Она видела и m lle Bourienne с ее лентой и красивым лицом и оживленным, как никогда, взглядом, устремленным на него; но она не могла видеть его, она видела только что то большое, яркое и прекрасное, подвинувшееся к ней, когда она вошла в комнату. Сначала к ней подошел князь Василий, и она поцеловала плешивую голову, наклонившуюся над ее рукою, и отвечала на его слова, что она, напротив, очень хорошо помнит его. Потом к ней подошел Анатоль. Она всё еще не видала его. Она только почувствовала нежную руку, твердо взявшую ее, и чуть дотронулась до белого лба, над которым были припомажены прекрасные русые волосы. Когда она взглянула на него, красота его поразила ее. Анатопь, заложив большой палец правой руки за застегнутую пуговицу мундира, с выгнутой вперед грудью, а назад – спиною, покачивая одной отставленной ногой и слегка склонив голову, молча, весело глядел на княжну, видимо совершенно о ней не думая. Анатоль был не находчив, не быстр и не красноречив в разговорах, но у него зато была драгоценная для света способность спокойствия и ничем не изменяемая уверенность. Замолчи при первом знакомстве несамоуверенный человек и выкажи сознание неприличности этого молчания и желание найти что нибудь, и будет нехорошо; но Анатоль молчал, покачивал ногой, весело наблюдая прическу княжны. Видно было, что он так спокойно мог молчать очень долго. «Ежели кому неловко это молчание, так разговаривайте, а мне не хочется», как будто говорил его вид. Кроме того в обращении с женщинами у Анатоля была та манера, которая более всего внушает в женщинах любопытство, страх и даже любовь, – манера презрительного сознания своего превосходства. Как будто он говорил им своим видом: «Знаю вас, знаю, да что с вами возиться? А уж вы бы рады!» Может быть, что он этого не думал, встречаясь с женщинами (и даже вероятно, что нет, потому что он вообще мало думал), но такой у него был вид и такая манера. Княжна почувствовала это и, как будто желая ему показать, что она и не смеет думать об том, чтобы занять его, обратилась к старому князю. Разговор шел общий и оживленный, благодаря голоску и губке с усиками, поднимавшейся над белыми зубами маленькой княгини. Она встретила князя Василья с тем приемом шуточки, который часто употребляется болтливо веселыми людьми и который состоит в том, что между человеком, с которым так обращаются, и собой предполагают какие то давно установившиеся шуточки и веселые, отчасти не всем известные, забавные воспоминания, тогда как никаких таких воспоминаний нет, как их и не было между маленькой княгиней и князем Васильем. Князь Василий охотно поддался этому тону; маленькая княгиня вовлекла в это воспоминание никогда не бывших смешных происшествий и Анатоля, которого она почти не знала. M lle Bourienne тоже разделяла эти общие воспоминания, и даже княжна Марья с удовольствием почувствовала и себя втянутою в это веселое воспоминание.