lv20 QT对话框3

news2025/7/14 20:12:33

1 内置对话框

标准对话框样式

内置对话框基类        

QColorDialog,
QErrorMessage
QFileDialog
QFontDialog
QInputDialog
QMessageBox
QProgressDialog

QDialog Class帮助文档 

示例:各按钮激发对话框实现基类提供的各效果

第一步:实现组件布局()

第二步:实现信号与槽函数

 文件静态成员方法 

打印实现使用qdebug

代码:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QTextEdit>

#include<QColorDialog>
#include<QErrorMessage>
#include<QFileDialog>
#include<QFontDialog>
#include<QInputDialog>
#include<QMessageBox>
#include<QProgressDialog>

#include <QDebug>


class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
public slots:
    void setcolorf()
       {
           QColor c =  QColorDialog::getColor();
           te->setTextColor(c);
       }
       void showerr()
       {
           QErrorMessage *msg = QErrorMessage::qtHandler();
           msg->showMessage("EEEEEEEE");
       }

       void getfile()
       {
           QString filename = QFileDialog::getOpenFileName();

           qDebug()<<filename;    //qt中打印方法
           te->setText(filename);
       }

       void setfont()
       {
           bool ok;
           QFont myfont = QFontDialog::getFont(&ok);
           if(ok)
                te->setFont(myfont);
       }

       void getstr()
       {
            QString str =  QInputDialog::getText(this, "xxxx","yyyyy");
            te->setText(str);

       }

       void showmsg()
       {
           QMessageBox::information(this, "vvvv", "hello", "AAA");
       }

       void showprogress()
       {
              QProgressDialog p;
              p.setValue(50);
              p.exec();

       }

private:
    QPushButton *btcolor;
    QPushButton *bterrm;
    QPushButton *btfile;
    QPushButton *btfont;
    QPushButton *btinput;
    QPushButton *btmsg;
    QPushButton *btprg;

    QTextEdit *te;

};

#endif // WIDGET_H
#include "widget.h"
#include "QVBoxLayout"
#include "QHBoxLayout"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    btcolor = new QPushButton("setcolor");
    bterrm = new QPushButton("errmsg");
    btfile = new QPushButton("getfile");
    btfont = new QPushButton("setfont");
    btinput = new QPushButton("getstr");
    btmsg = new QPushButton("msg");
    btprg = new QPushButton("progress");

    te = new QTextEdit;

    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(btcolor);
    vbox->addWidget(bterrm);
    vbox->addWidget(btfile);
    vbox->addWidget(btfont);
    vbox->addWidget(btinput);
    vbox->addWidget(btmsg);
    vbox->addWidget(btprg);

    QHBoxLayout *mainbox = new QHBoxLayout;
    mainbox->addLayout(vbox);
    mainbox->addWidget(te);
    this->setLayout(mainbox);

    connect(btcolor, SIGNAL(clicked(bool)), this, SLOT(setcolorf()));
    connect(bterrm, SIGNAL(clicked(bool)), this, SLOT(showerr()));
    connect(btfile, SIGNAL(clicked(bool)), this, SLOT(getfile()));
    connect(btfont, SIGNAL(clicked(bool)), this, SLOT(setfont()));
    connect(btinput, SIGNAL(clicked(bool)), this, SLOT(getstr()));
    connect(btmsg, SIGNAL(clicked(bool)), this, SLOT(showmsg()));
    connect(btprg, SIGNAL(clicked(bool)), this, SLOT(showprogress()));


}

Widget::~Widget()
{

}

2 自定义对话框 

现象:模态显示,前面不关后面不关,小框可以卡其后面的态

有时候对于弹出对话框可以点确定关闭,可以点X全部关闭,那么这时候需要实现自定义对话框 

 添加新文件,添加C++

文件添加 姓名,基类

生成myQdialog的cpp和.h文件,需要用到信号与槽,Q_OBJEC

myqdialog.h

#ifndef MYQDIALOG_H
#define MYQDIALOG_H

#include <QDialog>
#include <QLineEdit>
#include <QPushButton>

class myQDialog : public QDialog
{
    Q_OBJECT
public:
    myQDialog();

public slots:
    void ok_pushed()
    {
        stat = true;
        close();
    }

public:
    static int getstat()
    {
        myQDialog a;
        a.exec();

        return a.stat;
     }

private:
    QLineEdit *le;
    QPushButton *pb;

    int stat;
};

#endif // MYQDIALOG_H

myqdialog.cpp

#include "myqdialog.h"
#include <QVBoxLayout>

myQDialog::myQDialog()
{
    le = new QLineEdit("aaaaaa");
    pb = new QPushButton("OK");

    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(le);
    vbox->addWidget(pb);

    setLayout(vbox);

    stat = false;
    connect(pb, SIGNAL(clicked(bool)), this, SLOT(ok_pushed()));
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H

 widget.cpp

#include "widget.h"
#include <QWidget>
#include <QDialog>
#include "myqdialog.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
#if 0
    myQDialog a;
    a.setFixedSize(100, 100);
    a.exec();

    if(!a.stat)
        exit(0);

#endif

    int s = myQDialog::getstat();

    if(!s)
          exit(0);
}

Widget::~Widget()
{

}

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

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

相关文章

dolphinscheduler集群部署教程

文章目录 前言一、架构规划二、配置集群免密登录1. 配置root用户集群免密登录1.1 hadoop101节点操作1.2 hadoop102节点操作1.3 hadoop103节点操作 2. 创建用户2.1 hadoop101节点操作2.2 hadoop102节点操作2.3 hadoop103节点操作 三、安装准备1. 安装条件2. 安装jdk3. 安装MySQL…

FreeRTOS 信号量

目录 一、信号量的概念 二、二值信号量 1、二值信号量的定义 2、二值信号量的作用 3、二值信号量的操作 4、二值信号量操作实验 5、二值信号量会导致优先级翻转问题 三、互斥信号量 1、互斥信号量的引入 2、注意&#xff1a;互斥信号量不能用于中断服务函数中&#xf…

kali linux通过aircrack-ng命令破解wifi密码

相关阅读&#xff1a;如何破解攻击WiFi 百度安全验证https://baijiahao.baidu.com/s?id1764248756021219497&wfrspider&forpc上面2篇文章写得都很不错 一、前期准备工作 1、将无线网卡挂载到Kali上 ​ 将无线网卡插到电脑上&#xff0c;如果弹出检测到新的USB设备&…

戏说c语言: 阶段性总结二

前言 师弟&#xff1a;“师兄&#xff0c;我终于和我喜欢的女生在一起了。感谢师兄呀。” 我&#xff1a;“恭喜啊&#xff0c;师弟&#xff01;” 师弟&#xff1a;“这要全靠这段学习c的缘分了啊&#xff0c;两个人没事交流c语言&#xff0c;一起去上课&#xff0c;共同成长…

vue3使用echarts绘制地图

vue3使用echarts绘制地图 安装echarts npm install echarts下载地图的json数据【我这里是把json数据单独粘出来然后新建了一个文件china.json】 下载中国及各个省份的地图数据引入 import chinaJson from ./china.json绘制地图 <template><div ref"myChart&q…

申请Sectigo证书

Sectigo&#xff08;前身为Comodo CA&#xff09;&#xff0c;是目前全球最优质的网络安全服务供应商之一。该证书颁发机构主要是为各个企业的网络数据安全传输提供解决方案以及用户数据安全。 其特点也非常鲜明&#xff0c;极具性价比&#xff0c;深受中小型企业的欢迎。其证…

企业有了ERP,为什么还要上BI?

在我们以往和企业的沟通过程中&#xff0c;我们发现还是有相当多的一部分企业对于商业智能 BI 了解不多&#xff0c;或者对商业智能 BI 的理解仅停留在花花绿绿的可视化页面上&#xff0c;要么就是提出以下类似问题&#xff1a; 财务部门&#xff1a;BI 的财务分析指标也就是三…

可靠性技术之链路聚合(LACP模式)

LACP模式下&#xff0c;两端设备所选择的活动接口数目必须保持一致&#xff0c;否则链路聚合组就无法建立。此时可以使其中一端成为主动端&#xff0c;另一端(被动端)根据主动端选择活动接口。通过系统LACP优先级确定主动端&#xff0c;值越小优先级越高。 在未配置链路聚合时&…

PDF Expert for Mac v3.9.2中文激活版下载

PDF Expert for Mac是一款易于使用的 PDF 编辑器和注释器&#xff0c;专为 Mac 设备设计。它允许用户轻松查看、编辑、签名、注释和共享 PDF。该软件使用户能够向他们的 PDF 添加文本、图像、链接和形状&#xff0c;突出显示和标记文本&#xff0c;填写表格以及签署数字文档。它…

02|JVM内存模型

1. JVM整体结构及内存模型 1.1 类装载子系统 负责加载字节码文件并将其转换为可以执行的Java类。类加载器子系统包括三个主要的类加载器&#xff1a;Bootstrap ClassLoader&#xff08;引导类加载器&#xff09;、Extension ClassLoader&#xff08;扩展类加载器&#xff09;和…

输入一个整数n,输出这个整数的二进制的0和1的个数

输入一个整数n&#xff0c;输出这个整数的二进制的0和1的个数:除二取余法 代码&#xff1a; #include <cstdio> int main() {int n;scanf_s("%d", &n);int arr[2] { 0 };while (n) {int yu n % 2;arr[yu];n n / 2;}printf("0的个数是&#xff1a…

2024-02-29 作业

作业要求&#xff1a; 编写链表&#xff0c;链表里面随便搞点数据 使用 fprintf 将链表中所有的数据&#xff0c;保存到文件中 使用 fscanf 读取文件中的数据&#xff0c;写入链表中 运行代码&#xff1a; main.c #include "link.h" int main(int argc, const char…

大数据毕业设计—基于Python旅游数据采集可视化分析推荐系统(完整系统源码+数据库+详细文档+全源码解析)

文章目录 基于Python旅游数据采集可视化分析推荐系统&#xff08;完整系统源码数据库详细文档全源码解析&#xff09;源码获取方式在文章末尾源码获取方式在文章末尾一、项目概述二、项目说明三、开发环境四、功能实现五、系统页面实现用户登录注册系统首页数据操作管理价格与销…

机试指南:Ch5:线性数据结构 Ch6:递归与分治

文章目录 第5章 线性数据结构1.向量 vector2.队列 queue(1)队列的特点、应用(2)基本操作(3)例题例题1&#xff1a;约瑟夫问题2 &#xff08;难度&#xff1a;中等&#xff09; (4)习题习题1&#xff1a;排队打饭 &#xff08;难度&#xff1a;中等&#xff09; 3.栈 stack(1)栈…

jsjiami.v7关于js加密运行环境的探索

浏览器环境、Node.js 环境和 vm2 环境之间存在一些区别&#xff0c;包括全局对象、核心模块和一些环境特定的 API。下面是一些区别的简要概述&#xff0c;以及一些代码示例来突显它们之间的不同。 1. 浏览器环境&#xff1a; 全局对象&#xff1a; 浏览器环境&#xff1a; 全…

加速AI测试领域的进化,顶尖专家与名校教授强强联合,助你快速成为人工智能测试领域的精英

随着人工智能在各行各业的广泛应用&#xff0c;学习并掌握AI技术在软件测试中的应用变得至关重要。不仅能使你跟上行业的发展趋势&#xff0c;还能提升你的竞争力。而且&#xff0c;市场对具备AI测试技能的测试工程师的需求正日益增长&#xff0c;这使得掌握这些技能能够帮助你…

Linux网络编程(四-TCP协议)

目录 一、TCP概念 二、TCP的首部格式 三、TCP可靠传输机制 3.1 确认应答机制 3.2 超时重传机制 3.3 连接管理 3.3.1 三次握手 3.3.2 四次挥手 3.4 流量控制 3.5 拥塞控制 四、TCP效率机制 4.1 滑动窗口 4.2 重发控制 4.3 延迟应答 4.4 捎带应答 五、TCP的…

【Linux C | 网络编程】gethostbyname 函数详解及C语言例子

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

【Java程序设计】【C00323】基于Springboot的高校科研信息管理系统(有论文)

基于Springboot的高校科研信息管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校科研信息管理系统&#xff0c;本系统有管理员、学校管理员、科研人员三种角色&#xff1b; 管理员&#xff1a;首页、个…

企业数字化转型的第一步:由被动多云向主动多云转变

随着经济环境、市场形势、技术发展、用户需求等诸多因素的变化&#xff0c;数字化转型为企业进一步提升效率和竞争力、提供更加丰富的个性化产品和服务、进行业务场景创新、探寻新的增长机会和运营模式提供了崭新的途径。越来越多的企业意识到&#xff0c;数字化转型已不是企业…