Qt - 选择选项后CustomContextMenu保持打开状态

时间:2017-06-28 10:05:15

标签: qt

我有一个CustomContextMenu打开,我右键单击QTableWidget中的一个项目。菜单工作正常,但是,如果我单击其中一个选项菜单保持打开状态,如果再次单击相同的选项,它会再次执行操作并关闭菜单。只有其中一个选项才会出现这种情况。

我真的不知道为什么会发生这种情况,并且无法在网上找到有关为什么会发生这种情况的任何信息。如果有人知道什么可能导致它保持开放,那将非常感激。

QAction *newGroupAction = new QAction("Raise New", this);
QAction *deleteGroupAction = new QAction("Delete", this);

connect(newGroupAction, SIGNAL(triggered(bool)),this, SLOT(newItem()));
connect(deleteGroupAction, SIGNAL(triggered(bool)),this, SLOT(deleteItem()));

menu = new QMenu(this);
menu->addAction(newGroupAction);
if(ui->table->selectedItems().size() > 0 && adminPrivilege == true)
{
    menu->addAction(deleteGroupAction);
}
menu->popup(ui->table->horizontalHeader()->viewport()->mapToGlobal(pos));


void TableWidget::deleteItem()
{
    int ID = ui->table->item(ui->table->currentIndex().row(), 0)->text().toInt();

    if(adminPrivilege == true)
    {
         QSqlQuery query;
         query.prepare("DELETE FROM NOTES WHERE ID = (:id)");
         query.bindValue(":id", ID);
         query.exec();

         QSqlQuery query2;
         query2.prepare("DELETE FROM PAGES WHERE ID = (:id)");
         query2.bindValue(":id", ID);
         query2.exec();
    }
    else
    {
         QMessageBox error;
         error.setWindowTitle("Error!");
         error.setText("You do not have the correct privilege to delete");
         error.exec();
    }
    load();
}

0 个答案:

没有答案