我想知道如何在右键单击表格项时打开一个弹出菜单。在弹出菜单中应该提供一些操作,比如添加和删除,这将创建一个新行或删除所选行。
我是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());
}
}
编辑2: 好的,我解决了整个问题 :D。 我上传了我的代码,如果有人需要类似的东西,它可以帮助他/她。
takeItem()
方法。 - t3ft3l--i