QT主窗體右鍵彈出下拉菜單方法(我的主窗體的類名是CGuiMainwindow):
void CGuiMainwindow::contextMenuEvent(QContextMenuEvent* e)
{
QMenu *menu = new QMenu();
menu->addSeparator();
menu->addSeparator();
menu->addAction(Act_Maxsize);
menu->addSeparator();
menu->addSeparator();
menu->addAction(Act_Normal);
menu->addSeparator();
menu->addSeparator();
menu->exec(e->globalPos());
delete menu;
}
其中Act_Maxsize和Act_Normal是兩個QAction 對象指針。我的定義和初始化如下:
QAction* Act_Maxsize;
QAction* Act_Normal;
Act_Maxsize = new QAction(tr("XML"), this);
Act_Maxsize->setIcon(QIcon("Resources/logo.png"));
Act_Normal = new QAction(tr("SHOW"), this);
Act_Normal->setIcon(QIcon("Resources/logo.png"));
connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange()));
connect(Act_Normal, SIGNAL(triggered()), this, SLOT(XMLChange()));
油槽函數(shù)是用來響應(yīng)右鍵菜單的點擊動作,。
QT內(nèi)置控件添加右鍵菜單方法(以QTreeWidget添加右鍵菜單為例):
定義油槽
connect(moduleTree,SIGNAL(itemPressed(QTreeWidgetItem *, int)),this,SLOT(SlotItemClicked(
QTreeWidgetItem *, int)));
實現(xiàn)槽函數(shù)
void CGuiMainwindow::SlotItemClicked(QTreeWidgetItem *item, int column)
{
if (qApp->mouseButtons() == Qt::LeftButton)
{ return; }
if (qApp->mouseButtons() == Qt::RightButton)
{ if (item->childCount() > 0) { return; }
ShowMenu();
}
}
實現(xiàn)菜單顯示功能函數(shù):
void CGuiMainwindow::ShowMenu()
{
QPoint pos;
QMenu menu(moduleTree);
QIcon myIcon("Resources/logo.png");
menu.addAction(myIcon,tr("菜單_1"));
menu.addAction(myIcon,tr("菜單_2"));
menu.addAction(myIcon,tr("菜單_3"));
menu.addAction(myIcon,tr("菜單_4"));
menu.addAction(myIcon,tr("菜單_5"));
menu.addAction(myIcon,tr("菜單_6"));
menu.exec(QCursor::pos());
}