PySide QListWidget设置标志以使项目不可选择,以后可再次选择

2024-10-01 17:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习PySide,在第一次将QListWidget项设置为unselectable之后,我很困惑如何将QListWidget项的标志设置回可选。我知道我可以:

QListWidget.SetFlags(QtCore.Qt.ItemIsSelectable)

我有点不确定为什么标记名为“itemisselectable”,而它似乎使项目不可选择。但是我想在设置了这个标志之后将项目设置回可选。在

谢谢。在


Tags: 项目标记标志qtpysideqtcoreqlistwidgetsetflags
1条回答
网友
1楼 · 发布于 2024-10-01 17:26:46

如果要激活项目的标志,必须使用运算符|

it.setFlags(it.flags() | Qt.ItemIsSelectable)

如果要停用它,必须使用& ~

^{pr2}$

示例:

import sys
from PySide.QtGui import QApplication, QWidget, QVBoxLayout, QListWidget, QPushButton
from PySide.QtCore import Qt

class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        lay = QVBoxLayout(self)
        self.button = QPushButton("UnSelectable")
        self.listWidget = QListWidget()

        for i in range(10):
            self.listWidget.addItem("item {}".format(i))

        lay.addWidget(self.button)
        lay.addWidget(self.listWidget)
        self.button.clicked.connect(self.on_clicked)

    def on_clicked(self):
        if self.button.text() == "UnSelectable":
            self.button.setText("Selectable")
            for i in range(self.listWidget.count()):
                it = self.listWidget.item(i)
                it.setFlags(it.flags() & ~Qt.ItemIsSelectable)
        else:
            self.button.setText("UnSelectable")
            for i in range(self.listWidget.count()):
                it = self.listWidget.item(i)
                it.setFlags(it.flags() | Qt.ItemIsSelectable)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

相关问题 更多 >

    热门问题