设置标志使项目不可选择,稍后再次可选择
Setting flags to make an item unselectable and later, selectable again
我正在学习 PySide,我很困惑如何在第一次将 QListWidget 项目设置为不可选择后将其设置回可选择状态。我知道我可以:
QListWidget.SetFlags(QtCore.Qt.ItemIsSelectable)
我有点不确定为什么将标志命名为“ItemIsSelelectable”,因为它似乎使项目无法选择。但我想在设置此标志后将项目设置回可选状态。
如果你想激活一个项目的标志,你必须使用运算符 |
:
it.setFlags(it.flags() | Qt.ItemIsSelectable)
如果您想停用它,您必须使用 & ~
:
it.setFlags(it.flags() & ~Qt.ItemIsSelectable)
示例:
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_())
我正在学习 PySide,我很困惑如何在第一次将 QListWidget 项目设置为不可选择后将其设置回可选择状态。我知道我可以:
QListWidget.SetFlags(QtCore.Qt.ItemIsSelectable)
我有点不确定为什么将标志命名为“ItemIsSelelectable”,因为它似乎使项目无法选择。但我想在设置此标志后将项目设置回可选状态。
如果你想激活一个项目的标志,你必须使用运算符 |
:
it.setFlags(it.flags() | Qt.ItemIsSelectable)
如果您想停用它,您必须使用 & ~
:
it.setFlags(it.flags() & ~Qt.ItemIsSelectable)
示例:
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_())