QT右键菜单、右键下拉菜单、各控件响应右键菜单方法简介(转)

本文介绍如何在QT中为自定义窗口和内置控件(如QTreeWidget)添加右键菜单,并展示了具体的代码实现,包括菜单项的创建、连接信号与槽等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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()));

油槽函数是用来响应右键菜单的点击动作。

QT内置控件添加右键菜单方法(以QTreeWidget添加右键菜单为例):

定义油槽
connect(moduleTree,SIGNAL(itemPressed(QTreeWidgetItem *, int)),this,SLOT(SlotItemClicked(
QTreeWidgetItem *, int)));
实现槽函数
void CGuiMainwindow::SlotItemClicked(QTreeWidgetItem *item, int column)
{
     if (qApp->mouseButtons() == Qt::LeftButton)
     { return; }
     if (qApp->mouseButtons() == Qt::RightButton)
     { if (item->childCount() > 0) { return; }
        ShowMenu();
     }
}
实现菜单显示功能函数:
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());
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值