前言:
而今小伙伴们对“qt项目运行不弹出界面”可能比较讲究,咱们都想要学习一些“qt项目运行不弹出界面”的相关内容。那么小编同时在网摘上搜集了一些关于“qt项目运行不弹出界面””的相关资讯,希望姐妹们能喜欢,各位老铁们一起来了解一下吧!TableView右键弹出菜单
关于TableView的控件使用,这里不做解释了,直接说诉求,右键点击选中的某一行(术语称item),弹出菜单。操作结果如下图:
实现过程主要包括以下几个重点:
1、初始化一个TableView控件表
主要需要完成表头的设置,表格属性的设置。
代码如下:
point_time_model 表示TableView控件对应的model:
point_time_model = new QStandardItemModel(ui->Point_Time_tableView);
初始化:
const int table_cols = 3; //有几列QStringList headerList;headerList << "位置" << "监测时长" << " " ;point_time_model->setHorizontalHeaderLabels(headerList);point_time_model->setColumnCount(table_cols);//设置列表属性ui->Point_Time_tableView->verticalHeader()->setVisible(false); //隐藏列表头ui->Point_Time_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选择整行ui->Point_Time_tableView->setSelectionMode(QAbstractItemView::SingleSelection); //只选择一行ui->Point_Time_tableView->horizontalHeader()->setStretchLastSection(true); //最后一列填满表ui->Point_Time_tableView->setContextMenuPolicy(Qt::CustomContextMenu); //可弹出右键菜单
其中,ui->Point_Time_tableView->setContextMenuPolicy(Qt::CustomContextMenu); !!!这里是重点!!!
【领QT开发教程学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击→领取「链接」
2 、为TableView控件表添加右键菜单
首先需要创建一个菜单,并为菜单添加行为,代码如下:
.cpp文件中
QMenu *popMenu; //菜单popMenu = new QMenu(ui->Point_Time_tableView);QAction *actionUpdateInfo = new QAction();QAction *actionDelInfo = new QAction();actionUpdateInfo ->setText(QString("修改"));actionDelInfo ->setText(QString("删除"));popMenu->addAction(actionUpdateInfo);popMenu->addAction(actionDelInfo);
到这里,右键菜单已经建立好了,接下来的关键步骤是,如何右键点击一行,弹出该菜单,需要用到槽和信号机制。
3 、右键弹出菜单的槽和信号机制
.h文件中
1 private slots:2 //右键菜单响应函数3 void slotContextMenu(QPoint pos);
.cpp文件中,在第2步的代码之后初始化槽信号的connect函数:
connect(ui->Point_Time_tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
(1)该连接函数中的SIGNAL(customContextMenuRequested(QPoint))是QMenu的自带响应信号。
(2)SLOT(slotContextMenu(QPoint)))中的槽函数需要自己实现,代码如下:
void MainWindow::slotContextMenu(QPoint pos){ auto index = ui->Point_Time_tableView->indexAt(pos); if (index.isValid()) { popMenu->exec(QCursor::pos()); // 菜单出现的位置为当前鼠标的位置 }}
以上,右键点击某一行时,菜单就会出现,相应的每一个菜单需要什么样的响应操作,就是后续的槽和信号之间的操作。
标签: #qt项目运行不弹出界面