Qt点击按钮在其附近弹出一个窗口

news2024/9/29 1:28:34

效果

在这里插入图片描述

FS_PopupWidget.h

#ifndef FS_POPUPWIDGET_H
#define FS_POPUPWIDGET_H


#pragma once

#include <QToolButton>
#include <QWidgetAction>
#include <QPointer>

class QMenu;

class FS_PopupWidget : public QToolButton
{
    Q_OBJECT

public:
    FS_PopupWidget(QWidget *parent = Q_NULLPTR);
    ~FS_PopupWidget();

private:
    QPointer<QWidgetAction> m_popup_widget;
    QPointer<QMenu> m_menu;
};
#endif // FS_POPUPWIDGET_H

FS_PopupWidget.cpp

#include"fs_popupwidget.h"

#include <QMenu>
#include <QListWidget>
#include <QListWidgetItem>
#include <QHBoxLayout>
#include <QVBoxLayout>

#pragma execution_character_set("utf-8")

FS_PopupWidget::FS_PopupWidget(QWidget *parent)
    : QToolButton(parent)
{
    // set ToolButton attribute
    this->setPopupMode(QToolButton::InstantPopup);
    this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    this->setIcon(QIcon(":/images/images/error.png"));
    this->setText("弹出");

    m_popup_widget = new QWidgetAction(this);
    m_menu = new QMenu(this);

    QPointer<QListWidget> lwd = new QListWidget;
    lwd->setMinimumSize(QSize(400, 400));
    lwd->setViewMode(QListView::IconMode);
    lwd->setIconSize(QSize(80, 80));
    for (int i = 0; i < 10; i++)
    {
        QListWidgetItem* item = new QListWidgetItem(QIcon(":/images/images/warning.png"), "Test");
        lwd->addItem(item);
    }

    QPointer<QVBoxLayout> layout_main = new QVBoxLayout;
    layout_main->addWidget(lwd);
    QPointer<QWidget> default_widget = new QWidget;
    default_widget->setLayout(layout_main);
    m_popup_widget->setDefaultWidget(default_widget);

    m_menu->addAction(m_popup_widget);
    this->setMenu(m_menu);
}

FS_PopupWidget::~FS_PopupWidget()
{
}

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QHBoxLayout"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    myFS_PopupWidget=new FS_PopupWidget();
    ui->verticalLayout->addWidget(myFS_PopupWidget);
}

MainWindow::~MainWindow()
{
    delete ui;
}


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

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

相关文章

3dmax有哪些技巧?3damx不为人知的秘密

在装修设计和建筑可视化领域&#xff0c;3D MAX是一款强大的工具&#xff0c;可以帮助我们创建出高质量的3D模型和动画。然而&#xff0c;要充分发挥其潜力&#xff0c;我们需要掌握一些3D MAX渲染的技巧。以下是一些实用的技巧&#xff0c;帮助你提高渲染效率和质量。 合理设…

【总结】Dinky学习笔记

概述 Dinky 是一个开箱即用、易扩展&#xff0c;以 Apache Flink 为基础&#xff0c;连接 OLAP 和数据湖等众多框架的一站式实时计算平台&#xff0c;致力于流批一体和湖仓一体的探索与实践 官网&#xff1a;Dinky 核心特性 沉浸式&#xff1a;提供专业的 DataStudio 功能&a…

mysql8 源码编译 客户端连接运行 报段异常解决

mysql8 源码编译 客户端连接运行 报段异常解决。解决方案&#xff1a;删除之前编译的文件。先安装libncurses-dev依赖&#xff0c;在重新编译。原因&#xff1a;第一次编译没有libncurses-dev依赖&#xff0c;编译告警&#xff0c;再次编译有缓存&#xff0c;没有引入声明头文件…

Umi3 创建,配置环境,路由传参(代码示例)

目录 创建项目 配置环境 创建脚手架 项目结构及其目录、 路由 配置路由 嵌套路由 编程式导航和声明式导航 声明式导航 编程式导航 约定式路由 路由传参 query传参&#xff08;问号&#xff09; 接收参数 params传参&#xff08;动态传参&#xff09; 接收参数 创…

[zabbix] zabbix监控

一、温习zabbix自定义监控 二、zabbix 自动发现与自动注册 2.1 zabbix 自动发现 //zabbix 自动发现&#xff08;对于 agent2 是被动模式&#xff09; zabbix server 主动的去发现所有的客户端&#xff0c;然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数…

SpringBoot教程(五) | SpringBoot中Controller详解

SpringBoot教程(五) | SpringBoot中Controller详解 SpringBoot整合SpringMvc其实千面一直讲的都是。只需要我们在pom文件中引入 web的starter就可以了&#xff0c;然后我们就可以正常使用springMvc中的功能了。所以本篇文章可能更多的是回顾&#xff0c;回顾一下springMVC中的…

Centos7 制作系统镜像iso文件

Centos7 制作系统镜像iso文件 1. 系统备份镜像1.1 安装mondo1.2 制作备份镜像1.3 恢复系统 1. 系统备份镜像 这部分针对有系统备份需求&#xff0c;防止系统遭受意外状况&#xff0c;无法紧急恢复。整体备份内容较大&#xff0c;建议考虑后再进行操作 本次使用mondo软件进行备…

代码随想录算法训练营第28天 | 93.复原IP地址 78.子集 90.子集II

目录 93.复原IP地址 &#x1f4a1;解题思路 回溯三部曲 # 判断子串是否合法 &#x1f4bb;实现代码 78.子集 &#x1f4a1;解题思路 回溯三部曲 &#x1f4bb;实现代码 90.子集II &#x1f4a1;解题思路 &#x1f4bb;实现代码 93.复原IP地址 题目链接&#x…

Rocketmq rust版本-开篇

我是蚂蚁背大象(Apache EventMesh PMC&Committer)&#xff0c;文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm&#xff0c;文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsmapache.com Rust重构Rocketmq,大家好我是mxsm(Apache EventMesh PMC&Comm…

Linux网络编程---IP 地址格式转换函数

Linux网络编程—IP 地址格式转换函数 我们更容易阅读的IP地址是以点分十进制表示的&#xff0c;例如&#xff1a;192.168.5.10 &#xff0c;这是一种字符串的形式&#xff0c;但是计算器所需要的IP地址是以二进制进行表示&#xff0c;这便需要我们在点分十进制字符串和二进制地…

Swift 周报 第四十五期

文章目录 前言新闻和社区苹果或将扩充健康版图&#xff0c;为Apple Watch X铺路更新后的《Apple Developer Program 许可协议》现已发布 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第四十五期&#xff0c;每个模块已初步成型。各位…

【Linux】初识Linux及几个基本指令

Hello everybody!算算时间我已经有一个多月没有更新啦&#xff01;因为本专业是纺织工程&#xff0c;所以一直在复习应付期末考试\(0^◇^0)/。那好&#xff0c;废话不多说。让我们进入今天的主题&#xff01; 关于Linux系统可能很多同学不是很熟悉&#xff0c;有的人可能听过&…

《ORANGE’S:一个操作系统的实现》读书笔记(三十一)文件系统(六)

上一篇文章记录了对文件的读写操作&#xff0c;那么文件操作到目前为止&#xff0c;已经完成了创建和读写&#xff0c;还剩下的常用操作就是删除文件了。这篇文章就来记录删除文件的实现以及总结一下为文件系统添加系统调用的步骤。 删除文件 删除是添加的反过程&#xff0c;…

EndNote登录一直显示The username/password specified is not valid

EndNote登录一直显示The username/password specified is not valid EndNote20今天想打开之前的share library的时候一直显示 ‘The Username/password specified is not valid’&#xff0c;查了很多解决方案&#xff0c;现在献上解决方案&#xff1a; 该密码然后重新登陆…

如何在 SwiftUI 中使用 AccessibilityCustomContentKey 修饰符

文章目录 前言创建 User 结构体添加辅助修饰符使用新的修饰符使用修饰符来替换和覆盖数据可运行代码总结 前言 SwiftUI 3 发布了许多新的辅助功能 API&#xff0c;我们可以利用这些 API 以轻松的方式显著提高用户体验。本篇文章来聊聊另一个新的 API&#xff0c;我们可以使用 …

数仓面试之手写拉链表SQL,并分析有多少个job

数仓面试之手写拉链表SQL&#xff0c;并分析有多少个job 拉链表定义 维护历史状态&#xff0c;以及最新状态数据的一种表&#xff0c;拉链表根据拉链粒度的不同&#xff0c;实际上相当于快照&#xff0c;只不过做了优化&#xff0c;去除了一部分不变的记录而已,通过拉链表可以…

phpinfo和php -m 加载的php.ini不一致

目的&#xff1a; 将phpinfo在web中展示的php.ini和在命令行中展示的php.ini加载路径设置一致。 原本的php.ini加载路劲是&#xff1a; /usr/local/lib/php.ini 解决思路&#xff1a; &#xff08;1&#xff09;which php 查看服务器加载的php的位置&#xff0c;这里原来是&a…

Sketch不会安装?教你在Windows中打开Sketch!

使用 Windows 系统的 UI 设计师可能遇到过这样一个问题&#xff1a;他们收到了其他人发送的 Sketch 文件&#xff0c;但 Windows 系统无法打开 Sketch 文件&#xff0c;也不知道如何在 Windows 上打开 Sketch 文件。这是一个真实工作场景的问题。对于这个问题&#xff0c;即时设…

RT-Thread: 控制台调试串口波特率更改

说明&#xff1a;rt_kprintf 函数是RT 的一个调试接口使用的函数&#xff0c;波特率默认是 115200 &#xff0c;本文介绍更改这个波特率。 1.根据截图路径找到文件 serial.h 修改如下代码中关于波特率定义部分。 /* Default config for serial_configure structure */ #defin…

测试工程师必会能力之缺陷分析入门

缺陷分析也是测试工程师需要掌握的一个能力&#xff0c;但是很多时候大家只记得要提交缺陷、统计缺陷情况&#xff0c;而忽视了缺陷分析。 其实每个项目的缺陷记录都是有很大价值的&#xff1a; 在测试阶段分析当前缺陷情况&#xff0c;及时发现存在的问题并调整测试策略&…