QTableWidget中添加button

QTableWidget中添加QPushButton

在QTableWidget中可以添加多种Qt的空间信息,本文只以QPushButton为例进行说明:

// 创建QPushButton控件
QPushButton *pBtn = new QPushButton();  

// 绑定信号
connect(pBtn, SIGNAL(clicked()), this, SLOT(OnBtnClicked()));  

// 在QTableWidget中添加控件
tableWidget->setCellWidget(0,0,pBtn); 

// 绑定的响应函数
void OnBtnClicked(void)  
{  
    QPushButton *senderObj=qobject_cast<QPushButton*>(sender());  
    if(senderObj == nullptr)  
    {  
        return;  
    }  
    QModelIndex idx =tableWidget->indexAt(QPoint(senderObj->frameGeometry().x(),senderObj->frameGeometry().y()));  
    int row=idx.row();  
    // 其他响应信息......
}
QTableWidget添加按钮需要使用自定义单元格小部件。下面是一个例子,展示如何在QTableWidget添加按钮: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QWidget, QHBoxLayout from PyQt5.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建表格 self.tableWidget = QTableWidget() self.tableWidget.setRowCount(2) self.tableWidget.setColumnCount(2) self.setCentralWidget(self.tableWidget) # 添加按钮到表格 for row in range(2): for column in range(2): button = QPushButton("Button") button.clicked.connect(self.buttonClicked) widget = QWidget() layout = QHBoxLayout(widget) layout.addWidget(button) layout.setAlignment(Qt.AlignCenter) layout.setContentsMargins(0, 0, 0, 0) widget.setLayout(layout) self.tableWidget.setCellWidget(row, column, widget) def buttonClicked(self): print("Button clicked") if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 在这个例子,我们首先创建了一个QTableWidget,并设置它的行数和列数。然后,我们在表格循环遍历每个单元格,为每个单元格创建一个QPushButton,并将其添加到一个QWidget。我们还使用QHBoxLayout将QPushButton,并将QWidget设置为单元格的小部件。最后,我们将QWidget添加QTableWidget的单元格。 我们还连接了每个按钮的clicked信号buttonClicked函数,当按钮被点击时,该函数将被调用。在这个例子,我们只是简单地打印了一条消息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin_org

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值