我正在尝试在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"背景颜色"是指按钮周围的区域,而不是按钮面上文本下的颜色.
任何一个方便的复选框,但也不是灰色的(几乎不可见).
setEnabled(bool)哪些工作,但复选框然后是灰色的,几乎无法读取CheckBox类.setCheckable 也不起作用,它不允许我设置一个检查状态:
cb = this->ui->cb_RealWorld->isCheckable();
this->ui->cb_RealWorld->setCheckable(true);
this->ui->cb_RealWorld->setChecked(someValue);
this->ui->cb_RealWorld->setCheckable(cb);
Run Code Online (Sandbox Code Playgroud)所以我最好的方法是使用启用/禁用并接受灰色样式.
-------编辑-------
在样式表示例之后,我希望我可以设置禁用复选框的样式,例如启用的复选框.到目前为止失败了.更具体:更改示例中的图标对我来说不起作用,可能是因为我使用的是Windows,并且路径下的图标不可用,如示例所示.
PS:相关,但这里没有答案
我正在尝试使用标准QCheckbox/QRadioButton与Qt建立多行复选框/单选按钮.
我找不到直接解决方案,因为QRadioButton{wrap:true;}没有效果.唯一可能的是访问QRadioButton->label->setLineWrap(true)但是
除了将QRadioButton和QLabel放在一起之外,还有什么想法?
Thx,鲍里斯.
我是否遗漏了某些东西或者没有(现成/内置)方式以编程方式更改QCheckBox的状态而不会发出"void stateChanged(int state)"信号?
无论是否调用"void setCheckState(Qt :: CheckState state)"或者用户是否通过ui改变了状态,都会发出上述信号,并且没有像QLineEdit那样的"stateEdited"信号.
因此,如果没有现成的方法来区分编程和用户引发的QCheckBox状态的变化,并且唯一的选择是子类化/添加"stateEdited"信号或摆弄"void QObject :: blockSignals(bool block) ",为什么必须如此,即它是(某种)不一致(在Qt中)?
我用的QCheckBox是QTableWidgetCell
QWidget *widget = new QWidget();
QCheckBox *checkBox = new QCheckBox();
QHBoxLayout *layout = new QHBoxLayout(widget);
layout->addWidget(checkBox);
layout->setAlignment(Qt::AlignCenter);
layout->setContentsMargins(0, 0, 0, 0);
widget->setLayout(layout);
table->setCellWidget(0, 0, widget);
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变细胞背景?
我开发了一个带有复选框的简单对话框,它允许用户从列表中选择一个或多个项目。除了标准的“确定”和“取消”按钮之外,它还添加了“全选”和“取消全选”按钮,允许用户一次选中/取消选中所有项目(这对于大型列表很方便)。
import os, sys
from PyQt4 import Qt, QtCore, QtGui
class ChecklistDialog(QtGui.QDialog):
def __init__(self, name, stringlist=None, checked=False, icon=None, parent=None):
super(ChecklistDialog, self).__init__(parent)
self.name = name
self.icon = icon
self.model = QtGui.QStandardItemModel()
self.listView = QtGui.QListView()
if stringlist is not None:
for i in range(len(stringlist)):
item = QtGui.QStandardItem(stringlist[i])
item.setCheckable(True)
check = QtCore.Qt.Checked if checked else QtCore.Qt.Unchecked
item.setCheckState(check)
self.model.appendRow(item)
self.listView.setModel(self.model)
self.okButton = QtGui.QPushButton("OK")
self.cancelButton = QtGui.QPushButton("Cancel")
self.selectButton = QtGui.QPushButton("Select All")
self.unselectButton = QtGui.QPushButton("Unselect All")
hbox = QtGui.QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.okButton)
hbox.addWidget(self.cancelButton)
hbox.addWidget(self.selectButton)
hbox.addWidget(self.unselectButton)
vbox = …Run Code Online (Sandbox Code Playgroud) 我无法改变的颜色Qcheckbox在QT,有人可以帮助我的代码更改复选框文本标签的颜色.我试过Qpalette..而且我正在使用QT4.7.4版本..
在QtCreater中,我在项目中添加了一个表.在我的代码中,我生成一些数据输出到表中.我想在QCheckbox每行中添加一个以允许选择行.表的所有内容都左对齐,如何只将每行的第一列中的这些复选框与中心对齐?
我正在添加QCheckbox使用:
ui->data_table->setCellWidget(rowCount,0, new QCheckBox);
Run Code Online (Sandbox Code Playgroud) 有没有办法将QCheckBox单元格小部件放置在单元格QTableWidget的中心,而不是在左侧,而不需要额外的QWidget并将复选框添加到它的布局中?
qcheckbox ×10
qt ×8
c++ ×4
checkbox ×2
pyqt ×2
pyqt4 ×2
qt4 ×2
qtablewidget ×2
python ×1
qlistview ×1
qpushbutton ×1
qt-creator ×1
qt5 ×1
radio-button ×1