我想用 QLenerGradient 刷我的子小部件。我使用 QtDesigner 创建了 ui。
但是我不能用这段代码刷这个小部件。(ui.colorBarWidget是正常的QWidget是由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);
此外,此代码适用于独立的 QWidget 应用程序。这是它的输出:
但我不能在我的设计中做同样的事情。我可以用 styleSheet 做到这一点
ui.colorBarWidget->setStyleSheet( "background-color: qlineargradient( x1:0 y1:0, x2:0 y2:1, stop:0 blue, stop:1 red )" ); /* works */
但为什么我不能用 QPalette 做到这一点。
提前致谢。