我在Qt中创建了一个QPushButton而没有应用任何样式,所以它继承了Windows10的样式,结果如下:
然后我想暂时更改按钮的颜色,所以我使用了:
pushButton->setStyleSheet("background-color: rgb(255,220,220)")
得到这个结果:
这个结果已经不能满足我了,因为风格与原来的风格略有不同。无论如何,下一步是按钮必须返回到"正常"按下时的样式,所以我添加了这个命令
pushButton->setStyleSheet("background-color: rgb(240,240,240)")
但结果与开始按钮不同:
请您给我一些建议,以便更好地管理风格?
由于
答案 0 :(得分:1)
实际上当您将background-color
单独设置为QPushButton
时,除非您为边框设置了一些值,否则背景可能不会显示。
在这里查看(Stylable Widgets列表:QPushButton) http://doc.qt.io/qt-5/stylesheet-reference.html
我认为在Windows 10中出于某种原因,你甚至可以看到没有设置边框的东西。
但推荐的方法是设置一些边界值。
因此,请尝试如下所述设置边框值,并查看它是否符合您的要求:
pushButton->setStyleSheet("background-color: rgb(255,220,220);border: none; ")
在上述链接中,您可以找到以下信息:
警告:如果您只在QPushButton上设置背景颜色,除非您将border属性设置为某个值,否则背景可能不会出现。这是因为,默认情况下,QPushButton绘制一个与背景颜色完全重叠的原生边框。
答案 1 :(得分:0)
以下是一些您可能会发现非常相似和有用的片段。
我有一个更新按钮,我将其变为红色取消按钮。更新操作完成或按下取消后,我恢复了原始颜色和文本。
// Global variables to save off button state
QPalette update_btn_palette_restore;
QString update_btn_text_restore;
...
// Update button is pressed.
// Save the palette and text.
update_btn_palette_restore = _ui->update_button->palette ();
update_btn_text_restore = _ui->update_button->text ();
// Change the color palette and text
QPalette p=palette();
p.setBrush(QPalette::Button,Qt::red);
_ui->update_button->setPalette(p);
_ui->update_button->setText ("Cancel");
...
// Handler for when either cancel is pressed or update has finished
if(! update_btn_text_restore.isEmpty ()) {
_ui->update_button->setText (update_btn_text_restore);
_ui->update_button->setPalette(update_btn_palette_restore);
}