为每行Pyqt5添加一个Qcombobox
我有一个从SQL获取数据的QT表小部件,我想将一个组合框放在第4、5、6和7列(现在让我们只为第四列进行操作)。我做到了,但是当我执行代码时,我的qcombobox仅在最后一行中显示,这是因为我有一个循环在表中插入行,并且我将self.table.setcellwidget(行,列,commobox)放入这个循环,因此每次执行时,它都会将ComboBox移至最后一行,我该如何为每行组合一个组合框?这是我的代码
def datitabella(self):
delegate = MyDelegate(self)
tablerow = 0
conteggio = c.execute('SELECT COUNT(ID) FROM Viaggi').fetchone()[0]
combo = QComboBox()
for p in c.execute("SELECT Customer_code FROM Customers "):
combo.addItem(str(p))
for row in c.execute("SELECT * FROM Viaggi "):
righe = 0
self.tabella_registrazioni.setRowCount(conteggio)
self.tabella_registrazioni.setItem(tablerow, 0, QtWidgets.QTableWidgetItem(str(row[0])))
self.tabella_registrazioni.setItem(tablerow, 1, QtWidgets.QTableWidgetItem(row[1]))
self.tabella_registrazioni.setItem(tablerow, 2, QtWidgets.QTableWidgetItem(row[2]))
self.tabella_registrazioni.setItem(tablerow, 3, QtWidgets.QTableWidgetItem(row[3]))
self.tabella_registrazioni.setItem(tablerow, 4, QtWidgets.QTableWidgetItem(row[4]))
self.tabella_registrazioni.setItem(tablerow, 5, QtWidgets.QTableWidgetItem(row[5]))
self.tabella_registrazioni.setItem(tablerow, 6, QtWidgets.QTableWidgetItem(row[6]))
self.tabella_registrazioni.setItem(tablerow, 7, QtWidgets.QTableWidgetItem(row[7]))
self.tabella_registrazioni.setItem(tablerow, 19, QtWidgets.QTableWidgetItem(str(row[19])))
self.tabella_registrazioni.setCellWidget(tablerow, 4, combo)
tablerow+= 1
self.tabella_registrazioni.itemChanged.connect(self.changeIcon)
self.tabella_registrazioni.setItemDelegateForColumn(0, delegate)
I have a QT Table Widget where I get data from sql, I wanted to put a combo box to the column 4, 5, 6 and 7 (for now let's do it only for the 4th column). I did it but when I execute the the code my QComboBox is shown only in the last row, this because I have a for cycle that inserts rows in the table and I put the self.table.setCellWidget(row, column, combobox) in this loop, so everytime it's executed it moves the combobox to the last row, how can I have a combo box for each row? Here's my code
def datitabella(self):
delegate = MyDelegate(self)
tablerow = 0
conteggio = c.execute('SELECT COUNT(ID) FROM Viaggi').fetchone()[0]
combo = QComboBox()
for p in c.execute("SELECT Customer_code FROM Customers "):
combo.addItem(str(p))
for row in c.execute("SELECT * FROM Viaggi "):
righe = 0
self.tabella_registrazioni.setRowCount(conteggio)
self.tabella_registrazioni.setItem(tablerow, 0, QtWidgets.QTableWidgetItem(str(row[0])))
self.tabella_registrazioni.setItem(tablerow, 1, QtWidgets.QTableWidgetItem(row[1]))
self.tabella_registrazioni.setItem(tablerow, 2, QtWidgets.QTableWidgetItem(row[2]))
self.tabella_registrazioni.setItem(tablerow, 3, QtWidgets.QTableWidgetItem(row[3]))
self.tabella_registrazioni.setItem(tablerow, 4, QtWidgets.QTableWidgetItem(row[4]))
self.tabella_registrazioni.setItem(tablerow, 5, QtWidgets.QTableWidgetItem(row[5]))
self.tabella_registrazioni.setItem(tablerow, 6, QtWidgets.QTableWidgetItem(row[6]))
self.tabella_registrazioni.setItem(tablerow, 7, QtWidgets.QTableWidgetItem(row[7]))
self.tabella_registrazioni.setItem(tablerow, 19, QtWidgets.QTableWidgetItem(str(row[19])))
self.tabella_registrazioni.setCellWidget(tablerow, 4, combo)
tablerow+= 1
self.tabella_registrazioni.itemChanged.connect(self.changeIcon)
self.tabella_registrazioni.setItemDelegateForColumn(0, delegate)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须为每一行创建一个新的Qcombobox:
You have to create a new QComboBox for each row: