簡體   English   中英

如何在 QTableWidget 中獲取 ButtonWidget 的行?

[英]How to get the row of a ButtonWidget in a QTableWidget?

我正在嘗試動態填充 QTableWidget (table_proj)。

到目前為止,它的工作原理是表格已填滿並且看起來正確。 表中項目代碼:

for row in range(nb_row):
   for col in range(nb_col):
       item = QtWidgets.QTableWidgetItem(str(data[row][col]))
       self.table_proj.setItem(row, 0, item)
       self.table_proj.setCellWidget(row, 1, EditButtonWidget())

其中 nb_col 始終為 2,nb_row 為 len(data)。 數據是獲取所有信息的字典。

結果如下所示:

QTableWidget

EditButton 的代碼如下所示:

class EditButtonWidget(QtWidgets.QWidget):
    
    def __init__(self, parent=None):
        super(EditButtonWidget,self).__init__(parent)

        ###

        self.dw = DockWidget()

        ###Layout###

        self.layout = QtWidgets.QHBoxLayout(self)

        self.layout.setContentsMargins(0,0,0,0)
        self.layout.setSpacing(0)

        self.b1 = QtWidgets.QPushButton()
        self.b1.setText('Webseite')
        self.b1.clicked.connect(self.doButtonB1)


        self.b2 = QtWidgets.QPushButton()
        self.b2.setText('Link kopieren')
        self.b2.clicked.connect(self.doButtonB2)

        self.layout.addWidget(self.b1)
        self.layout.addWidget(self.b2)


        self.setLayout(self.layout)


    def doButtonB1(self):

        row = self.dw.table_proj.currentRow()
        print(row)
        

    def doButtonB2(self):
        
        pass

我的問題是,當我單擊“Webseite”按鈕時,它沒有給我正確的行,而是我只收到-1。

因此,如果有人可以給我一個提示,我的錯誤在哪里,那就太好了。

只需按照此處Qt 論壇上的建議,將該行EditButtonWidget class 的成員即可。

例如:

class EditButtonWidget(QtWidgets.QWidget):
    
    def __init__(self, row, parent=None):
        super(EditButtonWidget,self).__init__(parent)

        self.row = row

        ### etc ...

    def doButtonB1(self):
        print(self.row)

for row in range(nb_row):
   for col in range(nb_col):
       item = QtWidgets.QTableWidgetItem(str(data[row][col]))
       self.table_proj.setItem(row, 0, item)
       self.table_proj.setCellWidget(row, 1, EditButtonWidget(row))

如果您允許用戶插入/刪除/移動行,這可能不起作用。 在這種情況下,您可能需要像 qt 論壇帖子中那樣使用indexAt或將更多信息(在您的情況下為網站 url)傳遞給EditButtonWidget

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM