c++QTableWidget整行选择,并添加整行选择的函数链接

1.概要

2.内容

在Qt中使用QTableWidget来实现整行选择,并为整行选择添加响应函数,你可以按照以下步骤进行:

  1. 创建并设置QTableWidget
    • 设置行数和列数。
    • 设置选择行为整行选择。
  2. 连接信号和槽
    • 使用QTableWidgetselectionModel()来获取选择模型。
    • 连接选择模型的selectionChanged信号到一个槽函数,用于处理行选择事件。

以下是一个完整的示例程序:

#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QApplication>
#include <QTableWidget>
#include <QVBoxLayout>
#include <QWidget>
#include <QHeaderView>
#include <QDebug>

class MyWidget : public QWidget {
    Q_OBJECT

public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
        QVBoxLayout *layout = new QVBoxLayout(this);

        // 创建 QTableWidget
        tableWidget = new QTableWidget(5, 3, this);  // 5 行 3 列
        tableWidget->horizontalHeader()->setStretchLastSection(true);
        tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);  // 设置整行选择

        // 添加一些数据
        for (int row = 0; row < tableWidget->rowCount(); ++row) {
            for (int column = 0; column < tableWidget->columnCount(); ++column) {
                tableWidget->setItem(row, column, new QTableWidgetItem(QString("Item %1-%2").arg(row).arg(column)));
            }
        }

        layout->addWidget(tableWidget);

        // 连接信号和槽
        connect(tableWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MyWidget::handleSelectionChanged);
    }

private slots:
    void handleSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) {
        Q_UNUSED(deselected);

        // 遍历选中的行
        foreach (const QItemSelectionRange &range, selected) {
            for (int row = range.top(); row <= range.bottom(); ++row) {
                qDebug() << "Selected row:" << row;
                // 你可以在这里添加你需要的处理逻辑
            }
        }
    }

private:
    QTableWidget *tableWidget;
};
#endif // MYWIDGET_H
#include "MyWidget.h"

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    MyWidget widget;
    widget.show();

    return app.exec();
}

 

解释

  1. 创建QTableWidget
    • tableWidget = new QTableWidget(5, 3, this); 创建一个 5 行 3 列的表格。
    • tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); 设置表格的选择行为为整行选择。
  2. 添加数据
    • 使用双重循环为表格添加一些示例数据。
  3. 连接信号和槽
    • connect(tableWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MyWidget::handleSelectionChanged); 连接选择模型的selectionChanged信号到槽函数handleSelectionChanged
  4. 处理选择变化
    • 在槽函数handleSelectionChanged中,遍历选中的行,并输出选中的行号。你可以在这里添加你需要的处理逻辑。

编译和运行

确保你已经安装了Qt,并且设置了合适的Qt开发环境。将上述代码保存为一个.cpp文件(例如main.cpp),然后使用以下命令编译和运行:

qmake -project
qmake
make
./你的可执行文件名

这样,你就可以看到带有整行选择功能的QTableWidget,并且每次选择行时都会在控制台输出选中的行号。

3.运行结果

1.窗口

 2.控制台

Selected row: 1
Selected row: 2
Selected row: 3
Selected row: 2 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值