Qt如何让按钮的菜单出现在按钮的右侧

直接上代码,我们用到了一个eventfilter的函数功能。这个函数比较厉害和重要,大家务必经常拿出来看看。

void MainWindow::initMenu()

{

QMenu* menuLiXiang = new QMenu;

QAction* actXiangMuZhangCheng = new QAction("项目章程");

menuLiXiang->addAction(actXiangMuZhangCheng);

ui->btnLiXiang->setMenu(menuLiXiang);

ui->btnLiXiang->setArrowType(Qt::RightArrow);

menuLiXiang->installEventFilter(this);

}

bool MainWindow::eventFilter(QObject * obj, QEvent *event)

{

if (event->type() == QEvent::Show && obj == ui->btnLiXiang->menu())

{

QPoint pos = ui->btnLiXiang->mapToGlobal(ui->btnLiXiang->rect().topRight());

ui->btnLiXiang->menu()->move(pos);

return true;

}

return false;

}

相关推荐
Mortalbreeze1 分钟前
C++11 ---- 右值引用、值类型
开发语言·c++
少司府2 分钟前
C++进阶:多态
c语言·开发语言·c++·多态·抽象类·虚函数·虚表指针
:1213 分钟前
Java泛型
java·开发语言
喵了几个咪8 分钟前
Headless 后端实践:基于Go的企业级多栈管理系统脚手架
开发语言·vue.js·后端·golang·reactjs·gowind
枫叶丹49 分钟前
【HarmonyOS 6.0】Map Kit瓦片图层深度解析:本地加载方式与瓦片数据缓存能力
开发语言·缓存·华为·harmonyos
小小龙学IT10 分钟前
Go 并发模式深度解析:Fan-out/Fan-in 高效处理大规模数据流
开发语言·后端·golang
a833319611 分钟前
c语言课程设计小游戏,c语言小游戏设计案例
c语言·开发语言
valan liya11 分钟前
C++ 继承
开发语言·c++
路远_612 分钟前
Token、上下文、Prompt:大模型应用开发的三个基础概念
开发语言·人工智能
零点一顿微胖14 分钟前
[Agent] 初始化Agent服务 Rust版
开发语言·网络·rust