Qt点击按钮在附近弹出下拉框

效果

在这里插入图片描述

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include"toollayout.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;QAction *actionIpSet;QAction *actionAuthorize;ToolLayout *myToolLayout;
private slots:void slot_action_triggered(QAction *action);
};
#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QHBoxLayout"
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);myToolLayout=new ToolLayout();// 将 myToolLayout 添加到窗口的布局中QHBoxLayout *qHbox=new QHBoxLayout();qHbox->addWidget(myToolLayout);qHbox->addWidget(ui->pushButton_4);//初始化下拉菜单QMenu* menu = new QMenu(this);actionIpSet      = new QAction("按钮1", this);actionAuthorize   = new QAction("按钮2", this);menu->addAction(actionIpSet);menu->addAction(actionAuthorize);menu->addSeparator();menu->setWindowFlags(menu->windowFlags() | Qt::FramelessWindowHint);menu->setAttribute(Qt::WA_TranslucentBackground);//    menu->setStyleSheet(" QMenu {border-radius:5px;font-family:'Microsoft Yahei';font-size:14px;color:#fff;}"//                            " QMenu::item {height:30px; width:100px;padding-left:20px;border: 1px solid none;}"//                            "QMenu::item:selected {background-color:rgb(0,120,215);\//                            padding-left:20px;border: 1px solid rgb(65,173,255);}");ui->pushButton_4->setMenu(menu);// 将水平布局设置为窗口的布局centralWidget()->setLayout(qHbox);connect(menu, &QMenu::triggered, this, &MainWindow::slot_action_triggered);
}MainWindow::~MainWindow()
{delete ui;
}//.cpp
void MainWindow::slot_action_triggered(QAction *action)
{if(action == actionIpSet){//        qDebug() << "点击下拉菜单按钮1";}else if(action == actionAuthorize){//        qDebug() << "点击下拉菜单按钮2222";}
}

ToolLayout.h

#ifndef TOOLLAYOUT_H
#define TOOLLAYOUT_H#include <QWidget>
#include"QAction"
#include"QMenu"
namespace Ui {
class ToolLayout;
}class ToolLayout : public QWidget
{Q_OBJECTpublic:explicit ToolLayout(QWidget *parent = nullptr);~ToolLayout();private:Ui::ToolLayout *ui;QAction *actionIpSet;QAction *actionAuthorize;
private slots:void slot_action_triggered(QAction *action);
};#endif // TOOLLAYOUT_H

ToolLayout.cpp

#include "toollayout.h"
#include "ui_toollayout.h"
#include"QMessageBox"
ToolLayout::ToolLayout(QWidget *parent) :QWidget(parent),ui(new Ui::ToolLayout)
{ui->setupUi(this);//文字居中ui->label_2->setAlignment(Qt::AlignCenter);ui->label_3->setAlignment(Qt::AlignCenter);ui->label_4->setAlignment(Qt::AlignCenter);//初始化下拉菜单QMenu* menu = new QMenu(this);actionIpSet      = new QAction("actionIpSet", this);actionAuthorize   = new QAction("actionAuthorize", this);menu->addAction(actionIpSet);menu->addAction(actionAuthorize);menu->addSeparator();menu->setWindowFlags(menu->windowFlags() | Qt::FramelessWindowHint);
//    menu->setAttribute(Qt::WA_TranslucentBackground);
//    menu->setStyleSheet(" QMenu {border-radius:5px;font-family:'Microsoft Yahei';font-size:14px;color:#fff;}"
//                        " QMenu::item {height:30px; width:100px;padding-left:20px;border: 1px solid none;}"
//                        "QMenu::item:selected {background-color:rgb(65,173,255);\
//                        padding-left:20px;border: 1px solid rgb(0,120,215);}");ui->pushButton->setMenu(menu);
connect(menu, &QMenu::triggered, this, &ToolLayout::slot_action_triggered);
}ToolLayout::~ToolLayout()
{delete ui;
}//.cpp
void ToolLayout::slot_action_triggered(QAction *action)
{if(action == actionIpSet){QMessageBox::information(this,u8"INFO",u8"actionIpSet");}else if(action == actionAuthorize){QMessageBox::information(this,u8"INFO",u8"actionAuthorize");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+vite项目构建时报错npm ERR! code EPERMnpm ERR! syscall mkdir...

vscode终端中输入npm create vitelatest vueviteproject1 -- --vue命令后报错 具体报错如下&#xff1a; PS D:\project> npm create vitelatest vueviteproject1 -- --vue >> npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! path D:\node\node_cache\_cac…

C语言:自定义类型——联合和枚举

一、联合体 1.1 联合体类型的声明 像结构体⼀样&#xff0c;联合体也是由⼀个或者多个成员构成&#xff0c;这些成员可以是不同的类型。 声明方式如下图&#xff1a; 那联合体和结构体究竟有什么区别呢&#xff1f;&#xff1f; 下面将重点讲解联合体的特点&#xff01;&am…

判断交叉编译工具是否支持C++20的标准

写个任意的测试程序hello_world 执行 arm-linux-gnueabihf-g -stdc14 main.cpp arm-linux-gnueabihf-g -stdc17 main.cpp arm-linux-gnueabihf-g -stdc20 main.cpp没报错则代表支持&#xff0c;报错则不支持.

数字图像处理常用算法的原理和代码实现详解

本专栏详细地分析了常用图像处理算法的数学原理、实现步骤。配有matlab或C实现代码&#xff0c;并对代码进行了详细的注释。最后&#xff0c;对算法的效果进行了测试。相信通过这个专栏&#xff0c;你可以对这些算法的原理及实现有深入的理解&#xff01;   如有疑问&#xf…

公司想做一套数字化管理系统,该怎么做?

引言 一个老板的心声&#xff1a;随着科技的迅猛发展&#xff0c;公司数字化已经成为提升业务竞争力不可或缺的关键因素。在这个数字时代&#xff0c;我们公司旨在顺应潮流&#xff0c;迎接挑战&#xff0c;以构建一套强大而高效的数字化管理系统为目标。通过本系统&#xff0…

8路DI高速计数器,8路DO支持PWM输出,Modbus TCP模块 YL93 开关量输入输出

特点&#xff1a; ● 8路开关量输入&#xff0c;8路开关量输出 ● DI每一路都可用作计数器或者频率测量 ● DO每一路都可独立输出PWM信号 ● DI和DO都支持PNP&#xff0c;NPN切换功能 ● 支持Modbus TCP 通讯协议 ● 内置网页功能&#xff0c;可以通过网页查询电平状…

安达发|APS计划排产排程排单软件功能解析

APS计划排产排程排单软件是一种用于生产计划和排程的工具&#xff0c;它可以帮助制造企业实现高效、准确的生产计划和排程。该软件具有多种功能&#xff0c;包括可视化人机互动排产、一键式全自动排产、设备产能约束排产、模具约束排产、人员约束排产、半成品约束排产、物料齐套…

Unity | 渡鸦避难所-7 | 攻击碰撞检测

1 前言 英雄的宝剑并非只是装饰物&#xff0c;利剑出鞘时可以对怪物造成伤害。同样&#xff0c;怪物挥出铁拳时也会对英雄造成伤害。当然&#xff0c;都有同样的前提&#xff1a;在武器碰到对方的情况下&#xff0c;才会造成伤害。利用物理引擎&#xff0c;可以轻松的实现碰撞…

SparkSQL——(扩展) Cataylst

(扩展) Cataylst 优化器 RDD 和 SparkSQL 运行时的区别 RDD 的运行流程 大致运行步骤&#xff1a; 先将 RDD 解析为由 Stage 组成的 DAG, 后将 Stage 转为 Task 直接运行 问题&#xff1a; 任务会按照代码所示运行, 依赖开发者的优化, 开发者的会在很大程度上影响运行效率 解决…

图像分类 | 基于 Labelme 数据集和 VGG16 预训练模型实现迁移学习

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要使用数据标注工具 Labelme 对自行车&#xff08;bike&#xff09;和摩托车&#xff08;motorcycle&#xff09;这两种训练样本进行标注&#xff0c;使用预训练模型 VGG16 作为卷积基&#xff0c;并在其之上添加了全连接…

【OpenCV学习笔记14】- 图像的几何变换

这是对于 OpenCV 官方文档中 图像处理 的学习笔记。学习笔记中会记录官方给出的例子&#xff0c;也会给出自己根据官方的例子完成的更改代码&#xff0c;同样彩蛋的实现也会结合多个知识点一起实现一些小功能&#xff0c;来帮助我们对学会的知识点进行结合应用。 如果有喜欢我笔…

Notepad++运行C语言输出乱码

方法一&#xff1a;编码-编码字符集-中文-GB2312 这时原程序中文会变成乱码&#xff0c;我是重新输入中文 重新编译执行即可 缺陷&#xff1a;重开一个程序有中文还是会显示乱码&#xff0c;需要重新设置编码&#xff0c;比较麻烦 方法二&#xff1a;设置-首选项-新建-右侧编…

[SWPUCTF 2022 新生赛]ez_rce

[SWPUCTF 2022 新生赛]ez_rce wp 题目页面&#xff1a; 这个页面真的什么都没有。 目录爆破 dirsearch -u "http://node5.anna.nssctf.cn:28677/"返回结果&#xff1a; 访问 /.gitignore 页面 提示 thinkphp 。 访问 /robots.txt 页面 发现目录&#xff1a;/NSS/…

医院住院综合服务管理系统

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1 课题背景 互…

c++中超级好用的json库--json for morden c++

文章目录 json简介在线解析json的工具json for morden c简介简单使用 json简介 json是一种轻量简单的数据结构&#xff0c;常用于网络数据传输&#xff0c;相较于xml他更加简介轻量&#xff0c;相较于protobuf它的学习成本更低几乎看个十几分钟就能上手&#xff0c;因为就是一…

【J-Flash基本使用总结】

【J-Flash基本使用总结】 VX&#xff1a;hao541022348 ■ 烧录文件■ 创建新的工程■ 烧录模式-SWD模式■ J-Flash下载程序到单片机 ■ J-Flash拼接多个hex或bin文件■ J-Flash读单片机的option byte■ J-Flash读单片机Flash数据■ 将读出来的文件用jflash烧录到其他的芯片■ 设…

【C语言基础考研向】02 数据类型-常量-变量

文章目录: 一.数据类型 二.常量 三.变量 四. 整型数据 五.浮点型数据 六.字符型数据 七.字符串常量 一.数据类型 数据类型分为四大类: 基本类型 整型浮点字符型 构造类型 数组结构体 指针类型空类型 二.常量 常量是指在程序运行过程中&#xff0c;其值不发生变化的量。常量又…

Axure组件库免费下载,国内外资源都在这儿!

Axure 组件库具有高效再利用的价值。在设计中合理使用 Axure 组件库可以快速启动工作&#xff0c;避免重复简单的劳动&#xff0c;减轻设计师的负担&#xff0c;从而大大提高团队的生产力。在本文中&#xff0c;我们将分享如何下载 Axure 组件库&#xff0c;并附上 Axure 组件库…

SQL性能分析

SQL性能分析 1、SQL执行频率 ​ MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令&#xff0c;可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次&#xff1a; -- session 是查看当前会话 ; …

Python源码23:海龟画图turtle画小狗狗

---------------turtle源码集合--------------- Python教程43&#xff1a;海龟画图turtle画小樱魔法阵 Python教程42&#xff1a;海龟画图turtle画海绵宝宝 Python教程41&#xff1a;海龟画图turtle画蜡笔小新 Python教程40&#xff1a;使用turtle画一只杰瑞 Python教程39…