0
我在圖標模式下有一個Qlistwidget,並且我正在使用setItemWidget在我的自定義小部件中顯示我的元素,到目前爲止這工作正常。帶有自定義小部件的qlistwidgetitem在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
如果沒有看到一些代碼,很難說出問題所在。只是一個瘋狂的猜測。如果您在鏈接中關注該示例,是否記得在列表項上設置「setSizeHint」?如果沒有,你的圖標可能會比你的listWidgetItems大。 – 2011-06-10 18:29:53
是的,我正在設置它,我也試過把它放在比widget更大的位置,但它也不起作用。 – Jose 2011-06-10 21:57:14
我無法弄清楚。它與設置IconMode有關。它可能與我發現的Qt錯誤報告有關,但將QStyle設置爲CleanLooks之外的其他項並沒有解決問題。 http://bugreports.qt.nokia.com/browse/QTBUG-5141 – 2011-06-11 00:43:45