• 3771阅读
  • 3回复

[提问]QTableWidget怎么在没有数据的时候点出右键菜单 [复制链接]

上一主题 下一主题
离线kennethwei
 

只看楼主 倒序阅读 楼主  发表于: 2018-01-20
我在QTableWidget表格里,右键弹出菜单有新增、修改、删除这三个功能
菜单是在 QTableWidget 的 customContextMenuRequested 中写的
代码如下
void Dialog::on_tableWidget_customContextMenuRequested(const QPoint &pos)
{
    Q_UNUSED(pos);
    QMenu menu;
    menu.addAction(ui->actNew);
    menu.addAction(ui->actModify);
    menu.addAction(ui->actDelete);
    menu.exec(QCursor::pos());
}

如果表格中有数据时,没有问题,然后我把数据全部删除后,发现点不出右键菜单了
在网上百度了好久,没有找到答案
请问怎么在没有数据的时候点出右键菜单呢?  不胜感激!!
当你的才华撑不起你的野心时,静下心来学习吧
离线hailler

只看该作者 1楼 发表于: 2018-01-22
我是用 tableView实现的。
在初始化是定义
   m_tableView->setContextMenuPolicy(Qt::CustomContextMenu);
    //右键菜单在tableview才有效
    connect(m_tableView,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(slotTableViewMenu(const QPoint&)));

在函数中实现
void MainWindow::slotTableViewMenu(QPoint postion)
{
    Q_UNUSED(postion);
    QModelIndex index=m_tableView->currentIndex();
    //  qDebug()<<"tableview pop menu";
    if (index.isValid()){
        //   createPopMenu();
        pop_menu = new QMenu();
        action_insertRow = new QAction(this);
        action_appendRow = new QAction(this);
        action_deleteRow = new QAction(this);
        action_insertRow->setText(QString("插入土层"));
        action_appendRow->setText(QString("添加土层"));
        action_deleteRow->setText(QString("删除土层"));

        pop_menu->addAction(action_insertRow);
        pop_menu->addAction(action_appendRow);
        pop_menu->addAction(action_deleteRow);

        connect(action_insertRow,SIGNAL(triggered()),this,SLOT(on_insertBtn_clicked()));
        connect(action_appendRow,SIGNAL(triggered()),this,SLOT(on_addBtn_clicked()));
        connect(action_deleteRow,SIGNAL(triggered()),this,SLOT(on_delBtn_clicked()));

        pop_menu->move(cursor().pos());
        pop_menu->show();

    }
}
4条评分好评度+1贡献值+1金钱+10威望+1
kennethwei 好评度 +1 - 2018-01-24
kennethwei 贡献值 +1 - 2018-01-24
kennethwei 威望 +1 - 2018-01-24
kennethwei 金钱 +10 - 2018-01-24
离线hailler

只看该作者 2楼 发表于: 2018-01-22
QTableWidget 这类用起来虽然简单,可是功能不够强大,偶尔用用。
建议学习一下 view model delegate 模式。
离线kennethwei

只看该作者 3楼 发表于: 2018-01-24
谢谢
当你的才华撑不起你的野心时,静下心来学习吧
快速回复
限100 字节
 
上一个 下一个