PyQT4:在Qtableview中添加组合框

Moh*_*lah 5 combobox qt4 pyqt tableview

我是PyQT的新手.

我有兴趣在tableView的每一行添加一个组合框.在PyQT 4中有可能吗?

我知道,有可能在QT5,但不确定PyQT.

提前感谢您的帮助.

Che*_*byl 11

如果你真的想使用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)
Run Code Online (Sandbox Code Playgroud)

结果与第一个答案类似.


And*_*ndy 8

这是否需要使用QTableView来完成,还是可以使用QTableWidget来完成

假设您可以使用窗口小部件与视图,您可以轻松地将组合框(或任何窗口小部件)添加到单元格.


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)
Run Code Online (Sandbox Code Playgroud)

这里的重要部分是:

combo_box_options = ["Option 1","Option 2","Option 3"]
Run Code Online (Sandbox Code Playgroud)

这是您希望组合框保存的值列表.在此示例中,有三个选项.

for t in combo_box_options:
    combo.addItem(t)
self.table.setCellWidget(index,2,combo)
Run Code Online (Sandbox Code Playgroud)

该块每行设置组合框,然后将其添加到单元格(本例中的最后一个).

上面的代码块产生这样的输出:

桌面小工具与下拉