添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
// 在第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

apt install build-essential 后,gcc -v 只是 7.5.0?而编译 OpenCV 4.5.5 需要 9 或以上版本?怎么安装 gcc 9 或以上版本?

如果您需要在Ubuntu上安装GCC9或更高版本,可以尝试使用以下方法:添加PPA存储库:运行以下命令添加JonathonF的GCCPPA存储库。sudoadd-apt-repositoryppa:jonathonf/gc...