qlistwidgetitem с пользовательским виджетом не выглядит выбранным в пользовательском интерфейсе - PullRequest
0 голосов
/ 10 июня 2011

У меня есть Qlistwidget в режиме значков, и я использую setItemWidget для отображения своих элементов в моих пользовательских виджетах, пока это работает.

В значительной степени похоже на это:

/3001186/kakie-vidzhety-qt-ispolzovat-dlya-spiska-tolko-dlya-chteniya-vozmozhnosty-prokrutki-svorachivaniya-spiska-znachkov

Единственная проблема, которая у меня возникает, заключается в том, что когда я выбираю элементы, они не выглядят выделенными (без рамки вокруг них).Они выбираются, поскольку я получаю правильные сигналы, но вы не можете видеть выбор в пользовательском интерфейсе.Любые идеи о том, как заставить их выглядеть выделенными?

** Изменить, чтобы добавить пример кода **

(это модификация кода, найденного по предыдущей ссылке)

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 Ответ

2 голосов
/ 26 октября 2011

Да.,это связано с viewMode.Когда я устанавливаю viewMode для списка 1 как ListMode, выбранные элементы выглядят выделенными (выделенными)

list1.setViewMode(QtGui.QListView.ListMode)

, все еще пытаясь выяснить, почему он не работает с iconMode.,.

...