【发布时间】:2021-07-01 22:34:10
【问题描述】:
我想知道如何在右键单击表格项目时打开弹出菜单。在弹出菜单中应该给出一些操作,如添加和删除,这将创建一个新行或删除选定的行。
我是 Qt 世界的新手,所以如果有人能给我完整的详细信息(如果可能的话,附上代码),我将非常感谢他/她。
谢谢。
我的目标:只在QListWidget区域内,并且只有当你点击一个项目时,才会打开带有删除的菜单。
编辑:好的,我解决了QListWidget 和菜单的问题。现在必须完成以下工作:
如果您用鼠标右键单击一个项目,然后单击删除,则该项目将被删除。
我的代码:
void ProvideContextMenu(const QPoint &); // MainWindow.h
// In MainWindow.cpp
ui->listFiles->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->listFiles, SIGNAL(customContextMenuRequested(const QPoint &)),
this, SLOT(ProvideContextMenu(const QPoint &)));
void MainWindow::ProvideContextMenu(const QPoint &pos)
{
QPoint item = ui->listFiles->mapToGlobal(pos);
QMenu submenu;
submenu.addAction("ADD");
submenu.addAction("Delete");
QAction* rightClickItem = submenu.exec(item);
if (rightClickItem && rightClickItem->text().contains("Delete") )
{
ui->listFiles->takeItem(ui->listFiles->indexAt(pos).row());
}
}
Edit2:好的,我解决了整个问题:D。我上传了我的代码,如果有人需要类似的东西,它可以帮助他/她。
【问题讨论】:
-
阅读我的答案以正确使用
takeItem()方法 -
酷,真的好用