您的当前位置:首页正文

Qt按钮添加菜单

2023-12-20 来源:爱站旅游
导读Qt按钮添加菜单
Qt按钮添加菜单

⼀、前⾔

  Qt中给某个按钮添加菜单有多种⽅式,可以左键点击弹出菜单,也可以通过绑定customContextMenuRequested(const QPoint&)信号,使⽤CustomContextMenu⽅式右键弹出菜单;

本⼈在使⽤左键弹出菜单时,发现会有下拉三⾓,影响美观,故整理了下去除下拉三⾓的⽅法⼆、去除按钮设置菜单后的下拉三⾓

  1、采⽤样式去除(缺点:下拉三⾓被隐藏,但依旧会占空间,⽂本不居中)  //不显⽰图⽚

  m_PushButton->setStyleSheet(\"QPushButton::menu-indicator{image:none;}\");  2、采⽤槽函数,⼿动显⽰Menu⽅式

  思路:即绑定按钮的槽函数,在槽函数中新建QMenu,并设置位置,然后显⽰菜单  1)构造时创建显⽰菜单

1 //构造函数调⽤,创建菜单 2 void Widget::initMenu() 3 {

4 menu = new QMenu(this);

5 menu->setWindowFlags(menu->windowFlags() | Qt::FramelessWindowHint); 6 //menu->setAttribute(Qt::WA_TranslucentBackground); 7 menu->setObjectName(\"senMenu\");

8 sendAction = menu->addAction(\"Selected line\"); 9 ctrlAction = menu->addAction(\"Changed direction\");10

11 ui->pushButton->setCheckable(true);12 ui->pushButton_2->setMenu(menu);13 ui->pushButton_3->setMenu(menu);

14 //影藏三⾓形,但依旧会占右侧空间,字体不居中

15 ui->pushButton_3->setStyleSheet(\"QPushButton:menu-indicator{image:none;}\");16 }

构造时创建菜单

  2)槽函数中计算显⽰位置

1 //按钮槽函数

2 void Widget::menuSlot() 3 {

4 QPoint pos = ui->pushButton->pos(); 5

6 pos.setX(pos.x() + 1);

7 pos.setY(pos.y() + ui->pushButton->height() - 1); 8 //计算菜单位置

9 menu->exec(mapToGlobal(pos));10 }

显⽰位置计算  3、运⾏效果

  从左到右,依次为理想效果,有下拉三⾓效果,去三⾓效果    

因篇幅问题不能全部显示,请点此查看更多更全内容