【QT】QDialog/ QMessageBox/提示对话框/颜色(文字)------对话框

QDialog—对话框

什么是对话框,如下样式

非模态对话框,即打开以后,我还可以对其他框进行操作。

在这里插入图片描述

模态对话框,打开以后,其他框都不能再操作了

在这里插入图片描述

模态对话框是阻塞对话框

QDialog dig(this);
        //显示模态对话框
        dig.exec();  //在这里阻塞了,只有被关闭,才会向下走
   
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();

非阻塞对话框


    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        //非模态对话框
        QDialog dig(this);
        //显示非模态对话框
        dig.show();     //该对话框一闪而过,如何解决
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();
    });
  • 该对话框一闪而过,如何解决

给该对话框new一个空间,只有程序整个关闭时才会被析构

 QDialog *dig = new QDialog(this);

在这里插入图片描述

使用QT,只需要记住常用的信号,和常用的常函数。

根据要设计功能去找那个常方法适合,然后直接拿到代码里来试,试过就知道了。

设置对话框属性

该对话框只能主窗口关闭的时候才会关闭(父类不析构,子类不析构),那么如何让他可以自己关闭呢。

方法如下:设置属性

在这里插入图片描述

在这里插入图片描述

connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        //非模态对话框
        QDialog *dig = new QDialog(this);//指定父对象
        //设置对话框属性
        dig->setAttribute(Qt::WA_DeleteOnClose);
        //显示非模态对话框
        dig->show();     
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();
    });

在这里插入图片描述

代码中这样的宏,如何去记呢

开头都是QT大头

整个对话框学习的相关代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QLabel>
#include <QDialog>    //对话框类
#include <QMessageBox>//提示对话框
#include <QColorDialog>  //颜色对话框
#include <QFontDialog>   //字体对话框

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowIcon(QIcon(":/picture/42.jpg"));
    //this->setFixedSize(1000,1000);
    ui->dockWidget->show();

    QPushButton* button = new QPushButton("--v--",this);
    ui->statusBar->addWidget(button);  //给状态栏加控件

    //状态,服务器链接上小红灯图片变小绿灯(label里面只能放图片 )
    QLabel *label = new QLabel("未连接",this);
    ui->statusBar->addWidget(label);

    //规则    :/
    ui->actionSave_2->setIcon(QIcon(":/picture/45.jpg"));
   // ui->actionOpen->setIcon(QIcon(":/picture/43.jpg"));
    ui->actionClose->setIcon(QIcon(":/picture/44.jpg"));

/*
 *  // ui->Edit->addAction();
    //(设置菜单打开功能)打开一个对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值                                              //过滤条件,对打开的文件进行过滤
         QString name =  QFileDialog::getOpenFileName(this,"打开文件","home/yangyu/",tr("Images (*.png *.xpm *.jpg)"));
         qDebug()<<name.toUtf8().data();//将标准utf8转换为char*类型
    });

    //模态对话框 ---打开后,其他页面不可点
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QDialog dig(this);
        //显示模态对话框
        dig.exec();   //在这里阻塞了,只有被关闭,才会向下走
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));

    });
    //非模块对话框------打开后,其他页面可点
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        //非模态对话框
        QDialog *dig = new QDialog(this);//指定父对象
        //设置对话框属性
       dig->setAttribute(Qt::WA_DeleteOnClose);
        //显示非模态对话框
        dig->show();     //该对话框一闪而过,如何解决----设置属性
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();
    });

    //提示对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值
       //三 QMessageBox::about(this,"about","bug");
       //  QMessageBox::critical(this,"错误","erro,erro!",QMessageBox::Ok,QMessageBox::Cancel);
       // QMessageBox::information(this,"提示","举起手来",QMessageBox::Yes,QMessageBox::No);
       //  QMessageBox::question(this,"问题","你摊上大事了",QMessageBox::Close);
    if(QMessageBox::Open ==QMessageBox::warning(this,"警告","未成年禁止入内",QMessageBox::Open,QMessageBox::Close))
    {
        //显示模态对话框
        QDialog dig(this);
        dig.exec();
    }
    });
    //颜色对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QColor color = QColorDialog::getColor();
        qDebug()<<color.red()<<color.green()<<color.blue();

    });
    
    //字体对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
     bool ok;
     QFont font = QFontDialog::getFont(&ok, QFont("仿宋", 12), this,"字体设置");
     qDebug()<<font.family()<<font.italic()<<font.pointSize()<<font.bold();
    });
*/

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

QMessageBox—提示对话框

在这里插入图片描述
在这里插入图片描述


void 
about(QWidget *parent, const QString &title, const QString &text)
void 
aboutQt(QWidget *parent, const QString &title = QString())
QMessageBox::StandardButton 
critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
int 
critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)
QMessageBox::StandardButton 
information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton 
information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1 = NoButton)
QMessageBox::StandardButton 
question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = ..., QMessageBox::StandardButton defaultButton = NoButton)
int 
question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)
const QMetaObject 
staticMetaObject
QMessageBox::StandardButton 
warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
int 
warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)

about用法

  connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值
        QMessageBox::about(this,"about","bug");
    });

在这里插入图片描述

critical用法

   connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值
        QMessageBox::critical(this,"错误","erro,erro!",QMessageBox::Ok,QMessageBox::Cancel);
    });

在这里插入图片描述

information用法

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   
        QMessageBox::information(this,"提示","举起手来",QMessageBox::Yes,QMessageBox::No);

    });

在这里插入图片描述

question用法

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {  
        QMessageBox::question(this,"问题","你摊上大事了",QMessageBox::Close);
    });

在这里插入图片描述

warning用法

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {    
 QMessageBox::warning(this,"警告","未成年禁止入内",QMessageBox::Ok);
    });

在这里插入图片描述

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {  
    if(QMessageBox::Open ==QMessageBox::warning(this,"警告","未成年禁止入内",QMessageBox::Open,QMessageBox::Close))
    {
        //显示模态对话框
        QDialog dig(this);
        dig.exec();
    }
    });

在这里插入图片描述

颜色和字体对话框

#include <QColorDialog>  //颜色对话框

在这里插入图片描述

  connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QColor color = QColorDialog::getColor();
        qDebug()<<color.red()<<color.green()<<color.blue();
    });

在这里插入图片描述

文字对话框

在这里插入图片描述

  connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QColor color = QColorDialog::getColor();
        qDebug()<<color.red()<<color.green()<<color.blue();
    });

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS2中nav_msgs/msg/Path 数据含义及使用

目录 ROS2中nav_msgs/msg/Path数据含义及使用ROS官方消息说明使用ros2中Path生成路径并显示案例使用ROS2命令创建功能包修改创建功能包中的CMakeLists.txt如下创建发布话题的main函数编译与运行rviz可视化发布的路径 ROS2中nav_msgs/msg/Path数据含义及使用 ROS2官方关于nav_m…

vue面试--9, 1 ObjectProperty与vue3Proxy区别。2 MVVM的理解 3 双向绑定原理?

1 ObjectProperty与vue3Proxy区别 2 MVVM的理解 3 双向绑定原理&#xff1f;

Spring源码:手写AOP

文章目录 一、概念1、AOP是什么&#xff1f;2、相关概念1&#xff09;目标对象Target2&#xff09;通知Advice3&#xff09;连接点Joinpoint4&#xff09;切点Pointcut5&#xff09;切面Aspect6&#xff09;织入Weaving 二、分析三、实现1、实现Advice1&#xff09;前置通知2&a…

Jmeter高效组织接口自动化用例

1、善用“逻辑控制器”中的“简单控制器”。可以把简单控制器像文件夹一样使用&#xff0c;通过它来对用例进行分类归档&#xff0c;方便后续用例的调试和执行。 2、同编写测试用例一样&#xff0c;这里的接口测试用例应该进行唯一性编号&#xff0c;这样在运行整个用例计划出现…

wince+gprs拨号上网总结

一、硬件连接 本次调试的GPRS模块引脚定义 三星主板全功能扩展串口2引脚定义 因GPRS模块可以和pc机直连进行数据通讯&#xff0c;那么收发肯定内部交叉&#xff0c;故主板和GPRS的连接也采用直连方式。如果接线不对则出现没有回应现象&#xff0c;拨号时出现端口不可用&#xf…

【C++】十大排序算法之 桶排序 基数排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

吴恩达deeplearning.ai:机器学习项目的完整周期伦理

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 语音识别部署公平、偏见、伦理 这节博客中&#xff0c;我们主要看看构建一个机器学习的完整周期是什么&#xff0c;也就是说&#xff0c;当你想构建一个有价值的机器学习系统时&am…

vsphere虚拟机迁移是灰色如何解决

vsphere虚拟机迁移是灰色如何解决 问题描述&#xff1a; 在vsphere中&#xff0c;迁移虚拟机时迁移按钮是灰色&#xff0c;无法迁移&#xff0c;关机之后也无法迁移 虚拟机按钮为灰色 找到虚拟机存储对应的位置&#xff0c;查询是否有.vmx虚拟机文件 查询中发现有.vmx文件存…

史上最全的大数据开发八股文【自己的吐血总结】

自我介绍 我本硕都是双非计算机专业&#xff0c;从研一下开始学习大数据开发的相关知识&#xff0c;从找实习到秋招&#xff0c;我投递过100公司&#xff0c;拿到过10的offer&#xff0c;包括滴滴、字节、蚂蚁、携程、蔚来、去哪儿等大厂&#xff08;岗位都是大数据开发&#…

System Verilog学习笔记(十八)——线程控制

线程控制 发生器把激励传给代理时&#xff0c;环境类需要知道发生器什么时候完成任务&#xff0c;以便及时终止测试平台中还在运行的线程&#xff0c;这个过程就需要借助线程间的通信来完成。常用的线程间通信有事件控制、wait语句、SV信箱和旗语等。 Verilog对语句有两种分组…

Lego-loam 算法三维建图

运行环境 Linux&#xff1a;Ubuntu18.04ros&#xff1a;MelodicCeres Solver 2.0.0&#xff08;Ubuntu18.04安装Ceres&#xff09;PCL 1.8.1&#xff08;Ubuntu系统的PCL、Eigen卸载和安装&#xff09; 运行数据集 lego-loam 39/39 终端一&#xff1a;进入catkin_ws工作空间…

线程池不香了? 结构化并发才是王道!

我们先定义获取用户信息任务&#xff1a; 再定义获取订单信息任务&#xff1a; 然后再构造线程池并执行任务&#xff1a; 输出结果为&#xff1a; 看上去一切都刚刚好&#xff0c;但是&#xff0c;如果获取订单信息时出错了&#xff0c;此时会是什么现象呢&#xff1f;修改获取…

Java并发编程-实现多线程的四种方式

创建线程的四种方式 创建线程的四种方式包括使用继承 Thread 类、实现 Runnable 接口、使用 Callable 和 Future 接口以及利用线程池。每种方式都有其特定的优势和适用场景。通过继承 Thread 类或实现 Runnable 接口&#xff0c;可以定义线程要执行的任务&#xff0c;并通过调用…

计划任务和日志

一、计划任务 计划任务概念解析 在Linux操作系统中&#xff0c;除了用户即时执行的命令操作以外&#xff0c;还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务&#xff08;如定期备份、定期采集监测数据&#xff09;。RHEL6系统中默认已安装了at、crontab软件…

javascript中的强制类型转换和自动类型转换

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;前端泛海 景天的主页&#xff1a;景天科技苑 文章目录 1.转换函数2.强制类型转换&#xff08;1&#xff09;Number类型强转&…

【蓝桥杯】路径之谜(DFS)

一.题目描述 小明冒充 X 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 nn 个方格。如下图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。可以横向或纵向移动&#xff0c;但不能斜着走&#x…

Linux文件描述符剖析

文章目录 文件描述符文件描述符分配规则重定向软硬链接软链接&#xff08;Symbolic Link&#xff09;&#xff1a;硬链接&#xff08;Hard Link&#xff09;&#xff1a; 文件描述符 文件描述符&#xff08;File Descriptor&#xff09;是一个非负整数&#xff0c;用于标识打开…

OJ习题之——圆括号编码

圆括号编码 1.题目描述2.完整代码3.图例演示 1.题目描述 题目描述 令Ss1 s2 …sn是一个规则的圆括号字符串。S以2种不同形式编码&#xff1a; &#xff08;1&#xff09;用一个整数序列Pp1 p2 … pn编码&#xff0c;pi代表在S中第i个右圆括号的左圆括号数量。&#xff08;记为…

C++——string(2)

5. string类非成员函数 上面的几个接口大家了解一下&#xff0c;下面的OJ题目中会有一些体现他们的使用。string类中还有一些其他的 操作&#xff0c;这里不一一列举&#xff0c;大家在需要用到时不明白了查文档即可。 试用rfind、substr、find、find_first_(not)_of void te…

WordPress供求插件API文档:用户登录

该文档为WordPress供求插件文档&#xff0c;详情请查看 WordPress供求插件&#xff1a;一款专注于同城生活信息发布的插件-CSDN博客文章浏览阅读67次。WordPress供求插件&#xff1a;sliver-urban-life 是一款专注于提供同城生活信息发布与查看的插件&#xff0c;该插件可以实…