我想知道如何打开popupmenu,当我右键单击表项目。在弹出菜单中,应该给出一些操作,如添加和删除,这将创建一个新行或删除选定的行。Qt RightClick QListWidget打开上下文菜单并删除项目
我是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()'方法 –
酷,还真管用 – ejectamenta