我正在使用 PyQT 4.8.3 创建一个带有两个 QListWidget 的对话框,两者都允许多重选择。
我发现,如果启用了这些 QListWidget,则仅当 QListWidget 具有焦点时,所选项目才会以蓝色突出显示,如果没有焦点,则突出显示为浅灰色。
我还发现,如果 QListWidgets 被禁用,则尽管缺乏焦点,所选项目仍会以蓝色突出显示。
当用户从一个列表转到另一个列表时,他们会发现这一点very令人困惑。
作为一名开发人员,我发现浅灰色/不专心、蓝色/禁用行为是不可取的。我将不胜感激任何有关修改它们的建议。
我浏览过文档QListWidget、QListView 和 QAbstractView http://www.riverbankcomputing.com/static/Docs/PyQt4/html/classes.html没有找到任何适用的东西,我也浏览了样式表 http://qt-project.org/doc/qt-4.8/stylesheet-reference.html文档没有任何运气。
我会在这里使用样式表。在此示例中,此中选定的项目QListWidget
他会以蓝色突出显示吗?QListWidget
被禁用或没有焦点它们将变成灰色:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
class myWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(myWindow, self).__init__(parent)
self.setStyleSheet( """ QListWidget:item:selected:active {
background: blue;
}
QListWidget:item:selected:!active {
background: gray;
}
QListWidget:item:selected:disabled {
background: gray;
}
QListWidget:item:selected:!disabled {
background: blue;
}
"""
)
self.listWidget = QtGui.QListWidget(self)
self.listWidget.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
self.button = QtGui.QPushButton(self)
self.button.setText("Disable the list!")
self.button.clicked.connect(self.on_button_clicked)
self.layout = QtGui.QVBoxLayout(self)
self.layout.addWidget(self.button)
self.layout.addWidget(self.listWidget)
for itemNumber in range(5):
item = QtGui.QListWidgetItem(self.listWidget)
item.setText("Item {0}".format(itemNumber))
self.listWidget.addItem(item)
@QtCore.pyqtSlot()
def on_button_clicked(self):
enable = False if self.listWidget.isEnabled() else True
self.listWidget.setEnabled(enable)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('myWindow')
main = myWindow()
main.show()
sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)