// 在第2行第1列处添加一个按钮
QPushButton* button = new QPushButton("Button", this);
connect(button, SIGNAL(clicked()), this, SLOT(on_button_clicked()));
ui->tableWidget->setCellWidget(1, 0, button);
这里创建了一个QPushButton对象,并将其与on_button_clicked()槽函数连接起来。然后通过setCellWidget方法将该按钮放置到表格中的指定位置。
接下来需要实现on_button_clicked()槽函数,以处理按钮点击事件。可以根据被点击的按钮所在的单元格位置来获取对应的数据:
void MainWindow::on_button_clicked()
QObject* obj = sender();
if (obj != nullptr) {
// 获取被点击的按钮所在的单元格
int row = ui->tableWidget->row(obj);
int col = ui->tableWidget->column(obj);
// 获取该单元格对应的数据
QTableWidgetItem* item = ui->tableWidget->item(row, col);
if (item != nullptr) {
QString data = item->data(Qt::DisplayRole).toString();
qDebug() << "Button clicked: " << data;
这里使用sender()方法获取触发当前槽函数的对象,即被点击的QPushButton控件。然后再通过row和column方法获取该按钮所在的行列数,并使用item方法获取该单元格对应的QTableWidgetItem对象,从而获取该单元格中存储的数据。
完整示例代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
ui->setupUi(this);
// 添加表头
QStringList headers;
headers << "Name" << "Age" << "Action";
ui->tableWidget->setColumnCount(headers.size());
ui->tableWidget->setHorizontalHeaderLabels(headers);
// 添加数据
QList<QStringList> data = {
{"Alice", "20", ""},
{"Bob", "30", ""},
{"Charlie", "40", ""}
int row = 0;
for (const auto& rowData : data) {
int col = 0;
for (const auto& cellData : rowData) {
QTableWidgetItem* item = new QTableWidgetItem(cellData);
ui->tableWidget->setItem(row, col, item);
++col;
QPushButton* button = new QPushButton("Button", this);
connect(button, SIGNAL(clicked()), this, SLOT(on_button_clicked()));
ui->tableWidget->setCellWidget(row, col, button);
++row;
MainWindow::~MainWindow()
delete ui;
void MainWindow::on_button_clicked()
QObject* obj = sender();
if (obj != nullptr) {
int row = ui->tableWidget->row(obj);
int col = ui->tableWidget->column(obj);
QTableWidgetItem* item = ui->tableWidget->item(row, col - 1);
if (item != nullptr) {
QString data = item->data(Qt::DisplayRole).toString();
qDebug() << "Button clicked: " << data;
这里使用了QList来存储表格中的数据,每个QStringList表示一行数据。在添加每行数据时,同时也会为该行添加一个QPushButton控件,并将其放置到Action列中。点击按钮时,会调用on_button_clicked()槽函数来处理事件。
本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=3442
如果您需要在Ubuntu上安装GCC9或更高版本,可以尝试使用以下方法:添加PPA存储库:运行以下命令添加JonathonF的GCCPPA存储库。sudoadd-apt-repositoryppa:jonathonf/gc...