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;

}

相关推荐
陈文锦丫8 小时前
MQ的学习
java·开发语言
liwulin05068 小时前
【PYTHON-YOLOV8N】如何自定义数据集
开发语言·python·yolo
神仙别闹9 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
青蛙大侠公主9 小时前
Thread及其相关类
java·开发语言
爱吃大芒果9 小时前
Flutter 主题与深色模式:全局样式统一与动态切换
开发语言·javascript·flutter·ecmascript·gitcode
云栖梦泽9 小时前
易语言数据库操作:结构化数据管理的核心
开发语言
电子硬件笔记9 小时前
Python语言编程导论第七章 数据结构
开发语言·数据结构·python
南棱笑笑生9 小时前
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
linux·c语言·开发语言·rockchip
ulias2129 小时前
C++ 的容器适配器——从stack/queue看
开发语言·c++
Amewin10 小时前
window 11 安装pyenv-win管理不同的版本的python
开发语言·python