我想用QLinerGradient刷我的子小部件。我用QtDesigner创建了ui。
但我无法使用此代码刷这个小部件。(ui.colorBarWidget是普通的QWidget,由QtDesigner创建。)
query({A:A,A:A},
"select Col1, Count(Col2) where Col1 <> '' group by Col1 label Col1 'Guid'")
此外,此代码适用于独立的QWidget应用程序。这是它的输出:
但我的设计不能做同样的事情。我可以使用styleSheet
来做到这一点 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);
但为什么我不能用QPalette做到这一点。
提前致谢。
答案 0 :(得分:0)
我不知道哪种小部件是ui.colorBarWidget
,但它看起来不是一个条目小部件,如QLineEdit
或QComboBox
。
因此,您应该使用QPalette::Window
角色代替QPalette::Base
。
在Qt文档中,QPalette::Base role
有以下描述:
主要用作文本输入小部件的背景颜色,但可以 也可用于其他绘画 - 例如组合框的背景 下拉列表和工具栏句柄。它通常是白色或其他 浅色。
答案 1 :(得分:0)
我找到了解决方案。如果您在设置调色板后使用:
ui.colorBarWidget->setAutoFillBackground(true);
此属性默认为false。所以你应该启用它然后一切都很好。但是你也应该考虑尺寸,固定尺寸。