添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

为可检查的QListWidgetItem设置边界

1 人关注

我添加了一些可检查的QListWidgetItem,我对设置复选框的边框颜色有异议。setForeground函数只设置复选框文本的颜色。 请给我任何建议。

这是我创建可检查的QListWidgetItems的示例代码。

    watch_list = ["Protesters", "Local news staff", "Techfluencers"]
    for category in watch_list:
        self.checkBox = QtWidgets.QListWidgetItem(category)
        self.checkBox.setFlags(self.checkBox.flags() | QtCore.Qt.ItemIsUserCheckable)
        self.checkBox.setCheckState(QtCore.Qt.Unchecked)
        self.checkBox.setForeground(QtGui.QColor('#FFFFFF'))
        self.watchListslistWidget.addItem(self.checkBox)

我已经尝试

     self.watchListslistWidget.setStyleSheet("""
                                            QListWidget::item {              
                                                 border:1px #FFFFFF

但它将QListWidget的所有背景设置为白色。

2 个评论
你的问题令人困惑,因为当你指出复选框边框的颜色时,你是什么意思?项目的边界还是复选框的方形?
复选框方形的边界。
python
pyqt
pyqt5
qlistwidget
B.Obilo
B.Obilo
发布于 2020-06-19
2 个回答
eyllanesc
eyllanesc
发布于 2020-06-22
0 人赞同

你可以使用一个委托人。

from PyQt5 import QtCore, QtGui, QtWidgets
class CheckBoxDelegate(QtWidgets.QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super().initStyleOption(option, index)
        option.palette.setBrush(QtGui.QPalette.Button, QtGui.QColor("red"))
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.watchListslistWidget = QtWidgets.QListWidget()
        self.setCentralWidget(self.watchListslistWidget)
        watch_list = ["Protesters", "Local news staff", "Techfluencers"]
        for category in watch_list:
            checkBox = QtWidgets.QListWidgetItem(category)
            checkBox.setFlags(checkBox.flags() | QtCore.Qt.ItemIsUserCheckable)
            checkBox.setCheckState(QtCore.Qt.Unchecked)
            self.watchListslistWidget.addItem(checkBox)
        delegate = CheckBoxDelegate(self.watchListslistWidget)
        self.watchListslistWidget.setItemDelegate(delegate)
def main():
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    main()
    
我测试了你的代码,但没有看到在复选框的边框上设置任何颜色
@B.Obilo try add app.setStyle("fusion")
B.Obilo
B.Obilo
发布于 2020-06-22
已采纳
0 人赞同

我通过使用以下指标使其工作。

self.watchListslistWidget.setStyleSheet("""