【发布时间】:2015-08-08 02:11:16
【问题描述】:
我是 PyQT 的新手。
我有兴趣为 tableView 的每一行添加一个组合框。 PyQT 4 有可能吗?
我知道,在 QT5 中可以,但不确定 PyQT。
提前感谢您的帮助。
【问题讨论】:
标签: combobox pyqt qt4 tableview
我是 PyQT 的新手。
我有兴趣为 tableView 的每一行添加一个组合框。 PyQT 4 有可能吗?
我知道,在 QT5 中可以,但不确定 PyQT。
提前感谢您的帮助。
【问题讨论】:
标签: combobox pyqt qt4 tableview
如果你真的想使用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 来完成?
假设您可以使用小部件与视图,您可以轻松地向单元格添加组合框(或any widget)。
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)
self.table = QtGui.QTableWidget()
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
data1 = ['row1','row2','row3','row4']
data2 = ['1','2.0','3.00000001','3.9999999']
combo_box_options = ["Option 1","Option 2","Option 3"]
self.table.setRowCount(4)
for index in range(4):
item1 = QtGui.QTableWidgetItem(data1[index])
self.table.setItem(index,0,item1)
item2 = QtGui.QTableWidgetItem(data2[index])
self.table.setItem(index,1,item2)
combo = QtGui.QComboBox()
for t in combo_box_options:
combo.addItem(t)
self.table.setCellWidget(index,2,combo)
这里的重要部分是:
combo_box_options = ["Option 1","Option 2","Option 3"]
这是您希望组合框保存的值列表。在此示例中,共有三个选项。
for t in combo_box_options:
combo.addItem(t)
self.table.setCellWidget(index,2,combo)
此块设置组合框,每行,然后将其添加到单元格(本例中的最后一个)。
上面的代码块产生这样的输出:
【讨论】: