我在具有动态数据的 QtreeWidget 中的 QTreewidgetItem 中单击的编辑按钮

Posted

技术标签:

【中文标题】我在具有动态数据的 QtreeWidget 中的 QTreewidgetItem 中单击的编辑按钮【英文标题】:Edit button which i clicked in QTreewidgetItem in QtreeWidget which have dynamic data 【发布时间】:2022-01-11 19:35:38 【问题描述】:

我在 QTreeWidget 中有很多按钮,如何引用我点击的按钮或获取她的对象。

class MainWindow(QMainWindow, main_window_ui):
    def __init__(self, parent=None):
       super(MainWindow, self).__init__(parent)
       self.setupUi(self)
       self.treeWidget = QTreeWidget()

       self.treeWidget.setColumnCount( len(HEADERS) )
       self.treeWidget.setHeaderLabels( HEADERS )
       self.treeWidget.setHeaderHidden(True)
    
       for i in range(10):
           item = QTreeWidgetItem()
           self.treeWidget.addTopLevelItem(item)
           item.setText(0, str(i))
           item.setText(2, "123456789")
           item.setText(3, "Ready")
           item.setText(4, "2021-04-12")

           checkbox = QCheckBox()
           checkbox.setStyleSheet(checkboxst)
           self.treeWidget.setItemWidget(item, 1, checkbox)

           button = QPushButton()
           button.setText("Start")
           button.setStyleSheet(buttonst)
           self.treeWidget.setItemWidget(item, 5, button)
           # button.clicked.connect(self.getValue)

           it = QTreeWidgetItem()
           it.setText(0, "Edited")
           item.addChild(it)

       self.treeWidget.itemClicked.connect(self.getValue)

       #snip...


   def getValue(self):
       index = self.treeWidget.currentItem()

我只需要更改我点击的按钮中的文本,我如何才能只引用我点击的按钮?

【问题讨论】:

您要更改什么文字? 在从“开始”到“停止”的按钮中,但我不知道如何引用生成的这个按钮。 @eyllanesc 【参考方案1】:

如果您想确定按下了哪个按钮,则可以使用 sender 方法:

button.clicked.connect(self.handle_clicked)
def handle_clicked(self):
    button = self.sender()
    if isinstance(button, QPushButton):
        button.setText("Stop" if button.text() == "Start" else "Start")

【讨论】:

非常感谢,你帮了我很多,我很佩服你。

以上是关于我在具有动态数据的 QtreeWidget 中的 QTreewidgetItem 中单击的编辑按钮的主要内容,如果未能解决你的问题,请参考以下文章

QTreeWidget控件中 itemchanged信号触发后,怎么获取item修改前的值

关于qt中的QTreeWidget的拖放问题

Qt: 创建具有复选框的树形控件

如何使用 QTreeWidget 在 <list> 中的 <item>

QTreeWidget通过拖动重新排序子项

PyQt4 中的多列(可能使用 QTreeWidget)