首页 > 其他分享 >Qt自定义一个圆角对话框

Qt自定义一个圆角对话框

时间:2024-10-12 21:21:02浏览次数:9  
标签:btn Qt 自定义 对话框 添加 QWidget close include

如何得到一个圆角对话框?

步骤:

1、继承自QDiaglog

2、去掉系统自带的边框

3、设置背景透明,不设置4个角会有多余的部分出现颜色

4、对话框内部添加1个QWidget,给这个widget设置圆角,并添加到布局中让他充满对话框

5、后续对话框的所有内容都添加在这个widget里面

举例:

#ifndef ROUNDEDDIALOG_H
#define ROUNDEDDIALOG_H

#include <QDialog>
#include<QHBoxLayout>
#include<QLabel>
#include<QPushButton>

class RoundedDialog : public QDialog
{
    Q_OBJECT

public:
    RoundedDialog(QWidget *parent = nullptr) : QDialog(parent)
    {
        resize(400,200);
        //1.去掉系统自带的边框
        setWindowFlag(Qt::FramelessWindowHint);
        //2.设置背景透明,不设置4个角会有颜色
        setAttribute(Qt::WA_TranslucentBackground);

        //内部添加1个QWidget,给这个widget设置圆角,并添加到布局中让他充满对话框
        QHBoxLayout* h_box=new QHBoxLayout(this);
        h_box->setSpacing(0);
        h_box->setContentsMargins(0,0,0,0);

        QWidget* w=new QWidget(this);
        w->setStyleSheet(".QWidget{border-radius:20px;background-color:green}");
        h_box->addWidget(w);

        //后续对话框的所有内容都添加在这个widget里面
        QLabel* label=new QLabel("你好,我要说拜拜啦!",w);
        label->setAlignment(Qt::AlignCenter);
        label->setStyleSheet(R"(font: 900 12pt "Arial Black";)");
        label->move(120,50);

        QPushButton* btn_close=new QPushButton("×",w);
        btn_close->setStyleSheet("border-radius:15px;font-size:18px;font-weight:bold;background-color:pink");
        btn_close->setGeometry(185,150,30,30);
        connect(btn_close,&QPushButton::clicked,this,&QDialog::accept);

    }
    ~RoundedDialog()=default;
};
#endif // ROUNDEDDIALOG_H

 学习链接:https://github.com/0voice

标签:btn,Qt,自定义,对话框,添加,QWidget,close,include
From: https://blog.csdn.net/sc_o_r_pio/article/details/142886796

相关文章

  • 实验项目3 自定义路由转换器
    实验目的了解Django处理HTTP请求的流程。掌握路由转换器的用法。掌握如何定义和使用自定义路由转换器。实验内容操作1 创建Django项目chapter02(先进入之前创建的虚拟环境(python3.7、有Django))操作2 在项目chapter02中创建应用app01(应用需要激活应用并分配根路由、创建子......
  • Spring Boot 集成 RabbitMQ 自定义 MessageConverter
    1.SpringBoot集成RabbitMQ自定义消息转换器1.1.版本说明1.2.概述1.3.Spring配置1.4.定义常量1.5.配置交换机和队列1.6.配置ObjectMapper1.7.配置MessageConverter1.8.测试1.SpringBoot集成RabbitMQ自定义消息转换器1.1.版本说明构件版......
  • 自定义 http header 名称中带下划线时,可能会被 nginx 忽略删除
    在设计自定义header时,会发现如user_id这样的header无法被后端读取到想来中间有一层nginx搜了一下果然是它的影响,具体情况就不记录了,可以看参考链接。简单记录是因为下划线可能会导致一些兼容性问题,所以nginx默认不允许header名称带下划线,但也允许手动开启。解决方......
  • Qt全屏显示和按键ESC退出全屏
    1.需求描述将播放窗口全屏显示,将工具栏边框等隐藏在后面;然后退出全屏通过ESC返回按钮;2.实现方法定义一个全屏的容器类,继承于QWidget;全屏时,去掉窗口的父窗口,然后全屏显示,不去掉父窗口指针无法全屏;按下ESC按钮后,通过keyPressEvent(QKeyEvent*pEvent);函数,将父窗口重新设置回去;......
  • qt5widgets.dll丢失导致腾讯课堂无法打开难题:qt5widgets.dll文件缺失快速解决策略
    面对qt5widgets.dll文件丢失导致腾讯课堂无法打开的难题,以下提供一套快速解决策略,帮助您迅速恢复腾讯课堂的正常使用。一、了解qt5widgets.dll文件的重要性qt5widgets.dll是Qt5框架中的一个动态链接库文件,它提供了丰富的用户界面元素和功能,是许多基于Qt5开发的应用程序所必......
  • 了解如何实现自定义View
    在Android开发中,自定义View是实现独特UI组件的重要手段。通过自定义View,开发者可以创建出满足特定需求、具有独特外观和行为的UI元素。以下将详细介绍如何实现自定义View,包括基础步骤、关键要点以及最佳实践。一、自定义View的基础步骤1.继承View或其子类首先,你需要创建一......
  • 用自定义功能区完成Excel两种颜色的交错填充
    今天需要用Excel中的填充颜色完成两种颜色的交错填充在excel中,选择一个颜色填充后,再切换到另一个颜色,再点击填充。操作起来会显得比较笨重 于是萌生了一个想法,是否可以通过Excel的自定义功能区,增加一个类似于填充颜色的小方格,把另一种颜色放进去呢?答案是否定的。因为Excel默......
  • PyQt5/6 PySide2/6 在任务栏托盘区域编程,用于显示文字(图片)信息
    PyQt5/6PySide2/6在任务栏编程,用于显示文字(图片)信息本文使用PyQt5演示,其他库如PySide2/6,稍微改改就能用,因为其核心使用的是Win32gui来获取一些系统信息代码结构本文中全部代码全在test_taskbar.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显示出来,需要......
  • Qt,提升QLabel
     QLabel不能满足我的需求,需要提升QLabel为自己封装的类 在UI中,拉一个QLabel出来,鼠标右键点击QLabel,选择【提升为】,然后填写自己的类。 需要注意的是,提升后QLabel需要show一下,不然显示不出来 #ifndefMYVIDEO_H#defineMYVIDEO_H#include<QLabel>#include<QWidge......
  • 2024.10.11(自定义异常)
    自定义异常当程序中出现了某些“错误”,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。自定义异常的步骤定义类:自定义异常类名(程序员自己写)继承Exception或RuntimeException如果继承Exception,属于编译异常如果继承RuntimeExc......