Je veux brosser mon sous-widget avec QLinerGradient. J'ai créé l'interface utilisateur en utilisant QtDesigner.QPalette ne fonctionne pas sous QWidget
Mais je ne peux pas brosser ce widget en utilisant ce code. (Ui.colorBarWidget est QWidget normale a été créé par QtDesigner.)
QPalette palette;
QLinearGradient gradient(ui.colorBarWidget->rect().topLeft(),ui.colorBarWidget->rect().topRight());
gradient.setColorAt(0, Qt::blue);
gradient.setColorAt(0.2, Qt::green);
gradient.setColorAt(0.4, Qt::red);
gradient.setColorAt(0.6, Qt::yellow);
gradient.setColorAt(1, Qt::cyan);
palette.setBrush(QPalette::Base, gradient);
ui.colorBarWidget->setPalette(palette);
En outre, ce code fonctionne en stand alone QWidget application.This est sa sortie:
Mais je ne peux pas faire même chose dans ma conception. Je peux le faire avec styleSheet
ui.colorBarWidget->setStyleSheet("background-color: qlineargradient(x1:0 y1:0, x2:0 y2:1, stop:0 blue, stop:1 red)"); /* works */
mais pourquoi je ne peux pas faire cela avec QPalette.
Merci d'avance.
J'ai essayé Base, Background, Window ... mais je n'arrive toujours pas à le faire. Aussi, ui.colorBarWidget est normal QWidget a été créé à partir de QtDesigner. – Wilmort