Domanda

Sto cercando di creare una tabella di elenchi in Python con Qt (Pyside/Pyqt - Notta no) e le mie liste sono schiacciate nelle celle del tavolo.

C'è un modo per convincere i delegati dell'elenco a "far uscire" le loro celle? Ho allegato un semplice frammento di codice: sostituire PySide insieme a PyQt4 A seconda delle tue preferenze

from PySide import QtCore, QtGui

class ListDelegate(QtGui.QStyledItemDelegate):

  def createEditor(self, parent, option, index):
    editor = QtGui.QListWidget(parent)
    for i in range( 12 ):
      editor.addItem('list item %d' % i)

    return editor

if __name__ == '__main__':

  import sys

  app = QtGui.QApplication(sys.argv)

  model = QtGui.QStandardItemModel(2, 2)
  tableView = QtGui.QTableView()

  delegate = ListDelegate()
  tableView.setItemDelegate(delegate)

  tableView.setModel(model)

  for row in range(2):
    for column in range(2):

      item = QtGui.QStandardItem( 'None' )

      model.setItem(row, column, item)

  tableView.setWindowTitle('example')
  tableView.show()
  sys.exit(app.exec_())
È stato utile?

Soluzione

Quindi la risposta è usare

QComboBox

piuttosto che

QListWidget

Quindi la riga 6 diventa

editor = QtGui.QComboBox(parent)

E tutto è giusto con il mondo. Spero che questo aiuti qualcuno ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top