Combobox PyQT4:在Qtableview中添加组合框
我是PyQT的新手 我想在tableView的每一行中添加一个组合框。在Pyqt4中可能吗 我知道,这在QT5中是可能的,但不确定PyQTCombobox PyQT4:在Qtableview中添加组合框,combobox,pyqt,qt4,tableview,Combobox,Pyqt,Qt4,Tableview,我是PyQT的新手 我想在tableView的每一行中添加一个组合框。在Pyqt4中可能吗 我知道,这在QT5中是可能的,但不确定PyQT 提前感谢您的帮助。这需要使用还是可以使用 假设您可以使用小部件而不是视图,您可以轻松地将组合框(或)添加到单元格中 这里的重要部分是: combo_box_options = ["Option 1","Option 2","Option 3"] 这是您希望组合框保存的值列表。在本例中,有三个选项 for t in combo_box_options:
提前感谢您的帮助。这需要使用还是可以使用 假设您可以使用小部件而不是视图,您可以轻松地将组合框(或)添加到单元格中
这里的重要部分是:
combo_box_options = ["Option 1","Option 2","Option 3"]
这是您希望组合框保存的值列表。在本例中,有三个选项
for t in combo_box_options:
combo.addItem(t)
self.table.setCellWidget(index,2,combo)
此块按行设置组合框,然后将其添加到单元格(本例中的最后一个单元格)
上面的代码块生成如下输出:
如果您真的想使用
QTableView
,那么它有一个名为setIndexWidget
的特殊方法,您只需要在您想要放置小部件的地方建立索引。小例子
model = QStandardItemModel (4, 4)
for row in range(4):
for column in range(4):
item = QStandardItem("row %d, column %d" % (row, column))
model.setItem(row, column, item)
self.tableView.setModel(model)
for row in range(4):
c = QComboBox()
c.addItems(['cell11','cell12','cell13','cell14','cell15',])
i = self.tableView.model().index(row,2)
self.tableView.setIndexWidget(i,c)
结果与第一个答案类似。我需要使用QtableView。请问原因是什么?QTableWidget继承自QTableView。视图可以做的一切,小部件都可以做。它可以做得更多。
model = QStandardItemModel (4, 4)
for row in range(4):
for column in range(4):
item = QStandardItem("row %d, column %d" % (row, column))
model.setItem(row, column, item)
self.tableView.setModel(model)
for row in range(4):
c = QComboBox()
c.addItems(['cell11','cell12','cell13','cell14','cell15',])
i = self.tableView.model().index(row,2)
self.tableView.setIndexWidget(i,c)