Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Combobox PyQT4:在Qtableview中添加组合框_Combobox_Pyqt_Qt4_Tableview - Fatal编程技术网

Combobox PyQT4:在Qtableview中添加组合框

Combobox 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:

我是PyQT的新手

我想在tableView的每一行中添加一个组合框。在Pyqt4中可能吗

我知道,这在QT5中是可能的,但不确定PyQT


提前感谢您的帮助。

这需要使用还是可以使用

假设您可以使用小部件而不是视图,您可以轻松地将组合框(或)添加到单元格中



这里的重要部分是:

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)