Bet*_*ker 15 qt qcheckbox qt5 qpushbutton
我正在尝试在Qt5中更改QAbstractButton(QPushButton或QCheckBox)的背景颜色并且没有运气.
这没有任何作用:
pButton->setAutoFillBackground(true);
QPalette palette = pButton->palette();
palette.setColor(QPalette::Window, QColor(Qt::blue));
pButton->setPalette(palette);
pButton->show();
Run Code Online (Sandbox Code Playgroud)
如果我尝试更改样式表:
pButton->setStyleSheet("background-color: rgb(255,255,0);");
Run Code Online (Sandbox Code Playgroud)
然后Qt举起双手,画出一个看起来很粗糙的块状按钮.
有一个标题为" 如何更改QWidget的背景颜色 "的页面,但它只讨论了这两种方法.
还有一个页面" Qt Style Sheets Examples "暗示如果你想改变背景颜色,你必须接管绘制按钮的所有方面,这看起来有点矫枉过正.
我需要这个在Mac,Windows和Ubuntu Linux上运行,如果我必须手动绘制关于按钮的所有内容3次(每个平台一次),这真的不是一件幸福的事情.
我错过了一些明显的东西吗
ps"背景颜色"是指按钮周围的区域,而不是按钮面上文本下的颜色.
Alc*_*ete 12
我遇到了同样的问题,但终于有了这个工作.我正在使用Qt 5和Fusion颜色主题:
QPalette pal = button->palette();
pal.setColor(QPalette::Button, QColor(Qt::blue));
button->setAutoFillBackground(true);
button->setPalette(pal);
button->update();
Run Code Online (Sandbox Code Playgroud)
按照上面的确切顺序尝试这些命令,如果仍然无效,请将主题设置为Fusion,然后重试.
祝好运!
aba*_*yan 11
尝试这个:
QColor col = QColor(Qt::blue);
if(col.isValid()) {
QString qss = QString("background-color: %1").arg(col.name());
button->setStyleSheet(qss);
}
Run Code Online (Sandbox Code Playgroud)
正如@goetz 在 QT 论坛中提到的那样。
我使用了一些不同的Qcolor colas定义,QColor col = QColor::fromRgb(144,238,144);这对我有用。
更改Dialog styleSheet属性对我有用,将此属性设置为:
QPushButton:pressed {
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(60, 186, 162, 255), stop:1 rgba(98, 211, 162, 255))
}
QPushButton {
background-color: #3cbaa2; border: 1px solid black;
border-radius: 5px;
}
QPushButton:disabled {
background-color: rgb(170, 170, 127)
}
Run Code Online (Sandbox Code Playgroud)
在样式表中添加border:none; 属性.由于某种原因,这也删除了默认的背景颜色.例:background-color: rgba(46, 204, 113, 0.4); border: none;
小智 5
我找到了一个愚蠢的方法,尝试了调色板中的每个属性,并且在更改“QPalette::Base”时它对我有用。也许你可以尝试一下。
pButton->setAutoFillBackground(true);
QPalette palette = pButton->palette();
//palette.setColor(QPalette::Window, QColor(Qt.blue));
//palette.setColor(QPalette::Foreground, QColor(Qt.blue));
palette.setColor(QPalette::Base, QColor(Qt.blue));
//palette.setColor(QPalette::AlternateBase, QColor(Qt.blue));
//palette.setColor(QPalette::ToolTipBase, QColor(Qt.blue));
//palette.setColor(QPalette::ToolTipText, QColor(Qt.blue));
//palette.setColor(QPalette::Text, QColor(Qt.blue));
//palette.setColor(QPalette::Button, QColor(Qt.blue));
//palette.setColor(QPalette::ButtonText, QColor(Qt.blue));
//palette.setColor(QPalette::BrightText, QColor(Qt.blue));
pButton->setPalette(palette);
pButton->show();
Run Code Online (Sandbox Code Playgroud)
参考链接:如何获取样式表属性?
| 归档时间: |
|
| 查看次数: |
56628 次 |
| 最近记录: |