我用的是QT主窗体,类名是CGuiMainwindow,想实现右键弹出下拉菜单的功能。代码大概是这样的:
cpp
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指针,提前定义好了:
cpp
QAction* Act_Maxsize;
QAction* Act_Normal;
初始化的时候写了:
cpp
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));
然后连了信号槽,点菜单项会触发对应动作:
cpp
connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange()));
connect(Act_Normal, SIGNAL(triggered()), this, SLOT(XMLChange()));
槽函数就是处理右键点击后的操作,比如点XML就调ADDChange(),点SHOW就调XMLChange()。
有大佬看看这样写有问题不?有没有更简单或者更好的方法?求指导~
cpp
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指针,提前定义好了:
cpp
QAction* Act_Maxsize;
QAction* Act_Normal;
初始化的时候写了:
cpp
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));
然后连了信号槽,点菜单项会触发对应动作:
cpp
connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange()));
connect(Act_Normal, SIGNAL(triggered()), this, SLOT(XMLChange()));
槽函数就是处理右键点击后的操作,比如点XML就调ADDChange(),点SHOW就调XMLChange()。
有大佬看看这样写有问题不?有没有更简单或者更好的方法?求指导~
