Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法
1. 前言
Qt数据库操作中大部分用来读取,某些时候用来修改某一个数据,这两个都好实现,通过重写QSqlQueryModel来进行限制哪些位置可以单击修改,哪些位置只读即可。那么如果我们要给某一行添加右键选项进行整行的操作,怎么处理那,接下来我们就来总结一下。
2. 思路及主要代码
- 1.设置tableview点击某一位置时直接选中一行
- 2.设置tableview使用自定义内容按钮
- 3.设置并连接tablewview对应的自定义内容按钮信号槽
- 4.在tablewview自定义槽函数中创建QMenu
- 5.创建QAction设置后添加到QMenu中
- 6.绑定QAction点击的信号和槽函数
- 7.结束并定位按钮位置
代码如下:
//1.设置tableview点击某一位置时直接选中一行
ui->carConfigChangeTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
//2.设置tableview使用自定义内容按钮
ui->carConfigChangeTableView->setContextMenuPolicy(Qt::CustomContextMenu);
//3.设置并连接tablewview对应的自定义内容按钮信号槽
connect(ui->carConfigChangeTableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_carConfigChangeTableView_customContextMenuRequested(QPoint)));
//或直接在设计师中右键信号槽直接实现信号擦
//4.在tablewview自定义槽函数中创建QMenu
QMenu *carConfigChangeMenu = new QMenu();
//5.创建QAction设置后添加到QMenu中
QAction *actionAddCar = new QAction("添加入网设备", this);
carConfigChangeMenu->addAction(actionAddCar);
//6.绑定QAction点击的信号和槽函数
connect(carConfigChangeMenu, SIGNAL(triggered(QAction*)), this, SLOT(carConfigChangeMenuAddAction(QAction*)));
//carConfigChangeMenuAddAction就是action对应的槽函数
//7.结束并定位按钮位置
carConfigChangeMenu->exec(QCursor::pos());
3. 注意点:右键时按钮不出现
右键按钮QMenu没有在结束时设置定位,就会出现右键按钮不出现的问题。