- All (478)
- jom (0)
- Qt Linguist (7)
- Qt Eclipse Integration (9)
- Qt Designer (7)
- Qt Creator (4)
- Qt build system: qmake (31)
- Qt build system: configure (3)
- Qt Assistant (5)
- Printing (4)
- Porting from Qt 3 to Qt 4 (1)
- Plugins (7)
- Qt Visual Studio AddIn (2)
- Qt/MFC Migration (2)
- QtScript (3)
- MDI (2)
- XML (1)
- Widgets (22)
- WebKit (5)
- Tools and Containers (2)
- Threads (2)
- Text Handling (10)
- SQL (6)
- QtTest (1)
- QtService (1)
- Platform: Windows (49)
- Platform: Unix (16)
- Platform: Mac OS X (18)
- Image Formats (2)
- I/O (2)
- Graphicsview (8)
- Font handling (9)
- Event System (18)
- Drag and Drop (4)
- Dialogs (6)
- Desktop integration (3)
- ActiveQt (3)
- Itemviews (60)
- Layout (4)
- Qt Quick (10)
- Qt SDK (1)
- Licensing (2)
- Platform: Embedded Linux (38)
- Painting (32)
- OpenGL (4)
- Object Model (6)
- Network (5)
- Multimedia (3)
- Miscellanous (23)
- Main Window (19)
- Look and Feel (23)
- Development (0)
- Getting Involved (0)
- Routines (0)
How can my stylesheet account for custom properties?
In order to account for custom properties in your stylesheet, you can use the Property Selector, see:
http://doc.qt.nokia.com/stylesheet-syntax.html#selector-types
http://doc.qt.nokia.com/stylesheet-examples.html#customizing-using-dynamic-properties
If the value of the Qt property changes after the style sheet has been set, you will probably have to force a style sheet recomputation. This can be done by calling
- style()->unpolish(theWidget);
- style()->polish(theWidget);
Alternatively, you can unset the style sheet and set it again, but this is more expensive than the first solution.
The following example demonstrates how this can be done:
- #include <QtGui>
- {
- Q_OBJECT
- public:
- {
- setProperty("theMaximum", false);
- setStyleSheet("QLineEdit[theMaximum=\"true\"] {background-color: black}\
- QLineEdit[theMaximum=\"false\"] {background-color: red}");
- oldSheet = styleSheet();
- }
- public slots:
- void test1()
- {
- setProperty("theMaximum", true);
- #if 1
- style()->unpolish(this);
- style()->polish(this);
- #else
- setStyleSheet(styleSheet());
- #endif
- }
- private:
- QString oldSheet;
- };
- #include "main.moc"
- int main(int argc, char** argv)
- {
- QWidget window;
- layout->addWidget(new LineEdit(&window));
- window.show();
- return app.exec();
- }

No comments