在PyQt中向QTableWidget单元添加多个小部件

问题描述 投票:2回答:2

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

self.tableWidget = QtGui.QTableWidget()

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

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

python pyqt4
2个回答
5
投票

您只需创建自己的小部件,其中包含三个按钮,例如通过子类化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())

3
投票

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

你可以使用几种不同的。 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)
© www.soinside.com 2019 - 2024. All rights reserved.