我想知道如何打開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