QT开发中文网

使用C++在界面1中的QtableView选中一行数据,右键该行数据弹出菜单,选择转到源目标跳转到对应的界面2中

实现过程:

  1. 在界面1的QTableView中设置右键菜单,可以通过重写contextMenuEvent()函数来实现。

  2. 在右键菜单中添加一个“转到源目标”选项,并连接对应的槽函数。

  3. 在槽函数中获取所选行的数据,并将其传递给界面2进行显示。

示例代码如下:

界面1的代码:

// 设置右键菜单
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu menu(this);
    QAction *gotoAction = new QAction(tr("转到源目标"), this);
    connect(gotoAction, &QAction::triggered, this, &MainWindow::gotoSourceTarget);

    menu.addAction(gotoAction);
    menu.exec(event->globalPos());
}

// 转到源目标
void MainWindow::gotoSourceTarget()
{
    QModelIndexList indexes = ui->tableView->selectionModel()->selectedIndexes();
    if (indexes.isEmpty()) {
        return;
    }

    // 获取选中行的数据
    QString data1 = ui->tableView->model()->data(indexes.at(0)).toString();
    QString data2 = ui->tableView->model()->data(indexes.at(1)).toString();

    // 构造数据传递给界面2
    QVariantMap data;
    data.insert("data1", data1);
    data.insert("data2", data2);

    // 显示界面2
    SecondWindow *secondWindow = new SecondWindow(data, this);
    secondWindow->show();
}

界面2的代码:

SecondWindow::SecondWindow(QVariantMap data, QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SecondWindow)
{
    ui->setupUi(this);

    // 显示数据
    ui->labelData1->setText(data.value("data1").toString());
    ui->labelData2->setText(data.value("data2").toString());
}

SecondWindow::~SecondWindow()
{
    delete ui;
}

注意:需要在界面2的头文件中包含QVariantMap类的定义。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1077

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?