【问题标题】:Adding Multiple Widgets to QTableWidget Cell in PyQt在 PyQt 中将多个小部件添加到 QTableWidget 单元格
【发布时间】:2015-04-21 06:21:40
【问题描述】:

我有一种情况,我想在 QTableWidget 中添加 3 个按钮。 我可以使用下面的代码添加一个按钮。

self.tableWidget = QtGui.QTableWidget()

saveButtonItem = QtGui.QPushButton('Save')
self.tableWidget.setCellWidget(0,4,saveButtonItem)

但我想知道如何添加多个(比如说 3 个)按钮。我的意思是与保存按钮一起,我想在同一列中添加其他 2 个按钮,例如编辑、删除(操作)

【问题讨论】:

    标签: python pyqt4


    【解决方案1】:

    您可以简单地创建自己的小部件,其中包含三个按钮,例如通过子类化QWidget:

    class EditButtonsWidget(QtGui.QWidget):
    
        def __init__(self, parent=None):
            super(EditButtonsWidget,self).__init__(parent)
    
            # add your buttons
            layout = QtGui.QHBoxLayout()
    
            # adjust spacings to your needs
            layout.setContentsMargins(0,0,0,0)
            layout.setSpacing(0)
    
            # add your buttons
            layout.addWidget(QtGui.QPushButton('Save'))
            layout.addWidget(QtGui.QPushButton('Edit'))
            layout.addWidget(QtGui.QPushButton('Delete'))
    
            self.setLayout(layout)
    

    然后,将此小部件设置为 cellwidget:

    self.tableWidget.setCellWidget(0,4, EditButtonsWidget())
    

    【讨论】:

      【解决方案2】:

      您使用布局小部件将小部件添加到其中,然后将布局小部件添加到单元格。

      您可以使用几种不同的方法。 http://doc.qt.io/qt-4.8/layout.html

      self.tableWidget = QtGui.QTableWidget()
      
      layout = QtGui.QHBoxLayout()
      
      saveButtonItem = QtGui.QPushButton('Save')
      editButtonItem = QtGui.QPushButton('Edit')
      layout.addWidget(saveButtonItem)
      layout.addWidget(editButtonItem)
      
      cellWidget = QtGui.QWidget()
      cellWidget.setLayout(layout)
      
      self.tableWidget.setCellWidget(0, 4, cellWidget)
      

      【讨论】:

      • 我想你的意思是self.tableWidget.setCellWidget(0,4,layout)。
      • iam getting TypeError: QTableWidget.setCellWidget(int, int, QWidget): argument 3 has unexpected type 'QHBoxLayout'
      • 好的,我通读了文档。好像我弄错了。我会更新答案。您需要先将布局添加到 QWidget
      • @Leon 谢谢回复。它有效,但我需要设置布局 contentMargins 和间距以完美设置按钮。否则按钮会被挤压。
      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      • 2014-08-16
      • 1970-01-01
      • 2019-02-01
      相关资源
      最近更新 更多