在UI上看起来没有选择带有自定义窗口小部件的qlistwidgetitem

时间:2011-06-10 17:22:46

标签: qt pyqt qlistwidget

我在图标模式下有一个Qlistwidget,我正在使用setItemWidget在我的自定义小部件中显示我的元素,到目前为止这是有用的。

几乎就是这个:

https://stackoverflow.com/questions/3639468/what-qt-widgets-to-use-for-read-only-scrollable-collapsible-icon-list

我唯一的问题是,当我选择项目时,它们看起来没有被选中(周围没有框架)。它们被选中,因为我得到了正确的信号,但你无法在UI上看到选择。 关于如何制作它们的任何想法都会被选中?

**编辑以添加示例代码**

(这是对前一个链接上的代码的修改)

import sys
from PyQt4 import QtGui, QtCore

class displayItem(QtGui.QWidget):  #A simple widget to display, just centers a digit in a 100x100 widget
    def __init__(self,num):
        QtGui.QWidget.__init__(self)
        self.size=100
        self.resize(self.size,self.size)
        self.setMinimumSize(self.size,self.size)
        self.text = num
    def paintEvent(self,event):
        p = QtGui.QPainter(self)
        p.drawText(self.size//2,self.size//2,str(self.text))


app = QtGui.QApplication(sys.argv)

#Build the list widgets

list1 = QtGui.QListWidget()                #This will contain your icon list
list1.setMovement(QtGui.QListView.Static)  #otherwise the icons are draggable
list1.setResizeMode(QtGui.QListView.Adjust) #Redo layout every time we resize
list1.setViewMode(QtGui.QListView.IconMode) #Layout left-to-right, not top-to-bottom

listItem = QtGui.QListWidgetItem(list1)
listItem.setSizeHint(QtCore.QSize(100,100)) #Or else the widget items will overlap (irritating bug)
list1.setItemWidget(listItem,displayItem(1))

listItem = QtGui.QListWidgetItem(list1)     #Add a few more items
listItem.setSizeHint(QtCore.QSize(100,100))
list1.setItemWidget(listItem,displayItem(2))

listItem = QtGui.QListWidgetItem(list1)
listItem.setSizeHint(QtCore.QSize(100,100))
list1.setItemWidget(listItem,displayItem(3))


list1.show()           #kick off the app in standard PyQt4 fashion
sys.exit(app.exec_())

由于

/ J

1 个答案:

答案 0 :(得分:2)

是。 。 它与viewMode有关。 当我将list1的viewMode设置为ListMode时,所选项目会被选中(突出显示)

list1.setViewMode(QtGui.QListView.ListMode)

仍然试图弄清楚为什么它不能与iconMode一起使用。 。