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

news2024/11/26 20:37:25

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();
    });

在这里插入图片描述

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

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

相关文章

数据库-Mysql-读写分离(Atalas,Mysql-Router,Mysql-Proxy)

Atalas 这个是很老的了&#xff0c;了解即可。 wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm rpm -ivh Atlas-2.2.1.el6.x86_64.rpm #安装后的目录 cd /usr/local/mysql-proxy配置 /usr/local/mysql-proxy/bin/encrypt roo…

【Bugs】java: 错误: 不支持发行版本 xx

文章目录 报错场景&#xff1a;报错原因&#xff1a;解决方法&#xff1a; 报错场景&#xff1a; IDEA运行Java项目报错&#xff0c;点击运行之后&#xff0c;IDEA在编译代码的时候就出现报错&#xff1a; 报错类型一&#xff1a;java: 错误: 不支持发行版本 21报错类型二&am…

H12-821_131

131.如图所示&#xff0c;R1、R2、R3和R4运行OSPF&#xff0c;缺省情况下该网络中选举________个DR。&#xff08;请填写阿拉伯数字&#xff09; 答案&#xff1a;3 注释&#xff1a; DR是链路上的概念&#xff0c;使用路由器接口的IP地址表示。链路的网络类型是广播网络类型或…

钉钉h5应用 globalthis is not defined vite client

钉钉h5应用 globalthis is not defined vite client problem 背景 钉钉h5应用使用 vue3 vite 构建的前端工程 问题 h5页面在pc端浏览器和pc端钉钉打开正常h5页面在移动端钉钉打开异常 页面空白 通过调试工具找到报错信息 globalthis is not defined vite client reason …

flutter插件市场,字节大牛耗时八个月又一力作

目录 触摸事件分发机制view渲染机制常用view布局ViewGroup自定义View实战 高级UI晋升 1.android的事件分发机制 2.Android面试题——View篇 3.自定义View面试题&#xff01; 4.布局ViewGroup 5.Android自定义View实战 最后 其实Android开发的知识点就那么多&#xff0c;面试…

低代码:数智化助力新农业发展

随着科技的飞速发展和数字化转型的深入推进&#xff0c;低代码开发平台正逐渐成为软件开发的热门话题。尤其在农业领域&#xff0c;低代码技术为传统农业注入了新的活力&#xff0c;助力新农业实现高效、智能的发展。 低代码开发平台的概念与特点 随着科技的飞速发展&#xff0…

Sublime Text 格式化Json文件 之 Pretty Json

需要使用到 Pretty Json插件。 一、安装方法 sublime 下&#xff0c;按快捷键 Comand control p&#xff0c; 输入install Package,然后回车 等几秒钟&#xff0c;加载启动进程完毕后弹出的页面中输入pretty json, 然后回车 等待几秒钟&#xff0c;可以查看Sublime 最下面的…

《UE5_C++多人TPS完整教程》学习笔记27 ——《P28 项目资产(Assets for The Project)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P28 项目资产&#xff08;Assets for The Project&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译…

如何查询docker镜像的最新版本

查询Docker镜像的最新版本通常有两种方式&#xff1a; 通过Docker CLI在本地查询&#xff1a; 如果你已经拉取过某个镜像并且想要查看本地是否已经有该镜像的最新版本&#xff0c;可以使用docker images命令列出所有本地镜像及其标签&#xff08;即版本&#xff09;。但请注意&…

各中间件性能、优缺点对比

参考资料&#xff1a; Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点&#xff1f;

十三、类的继承、访问级别

类的继承与访问控制 类的继承 使用sealed修饰的类&#xff0c;是私有类&#xff0c;不能作为基类使用C#中一个类&#xff0c;只能有一个父类&#xff0c;但是可以实现多个接口子类的访问级别不能超过父类的访问级别 using System; using System.Collections.Generic; using S…

Mysql实战(1)之环境安装

1&#xff0c;进入&#xff1a;MySQL :: MySQL Downloads 2&#xff0c; 3&#xff0c; 4&#xff0c;

【Linux】磁盘情况、挂载,df -h无法看到的卷

文章目录 解决挂载、解决挂载完重启就消失1、查看linux下的硬盘挂载的空间、使用空间2、查看没有挂载的硬盘是否检测在系统中3、挂载 &#xff08;挂载完&#xff0c;要在/etc/fstab 下面配置挂载信息 要不然重启挂载就消失了&#xff09; 解决挂载、解决挂载完重启就消失 linu…

全局渐变滚动条样式

效果如下&#xff1a; APP.vue<style> /* 整个滚动条 */ ::-webkit-scrollbar {width: 5px;height: 10px; } /* 滚动条上的滚动滑块 */ ::-webkit-scrollbar-thumb {background-color: #49b1f5;/* 关键代码 */background-image: -webkit-linear-gradient(45deg,rgba(255,…

鸿蒙4.0-DevEco Studio界面工程

DevEco Studio界面工程 DevEco Studio 下载与第一个工程新建的第一个工程界面回到Project工程结构来看 DevEco Studio 下载与第一个工程 DevEco Studio 下载地址&#xff1a; https://developer.harmonyos.com/cn/develop/deveco-studio#download 学习课堂以及文档地址&#x…

1.1 深度学习和神经网络

首先要说的是&#xff1a;深度学习的内容&#xff0c;真的不难。你要坚持下去。 神经网络 这就是一个神经网络。里面的白色圆圈就是神经元。神经元是其中最小的单位。 神经网络 单层神经网络&#xff1a; 感知机 &#xff08;双层神经网络&#xff09; 全连接层&#xff1a; …

三色标记过程

可达性分析 GC过程中需要对对象图遍历做可达性分析。使用了三色标记法进行分析。 什么三色&#xff1f; 白色&#xff1a;尚未访问过。 黑色&#xff1a;本对象已访问过&#xff0c;而且本对象 引用到 的其他对象 也全部访问过了。 灰色&#xff1a;本对象已访问过&#xff0…

简单的排序算法

目录 1.直接插入排序 2.希尔排序 3.选择排序 4.冒泡排序 5.计数排序 6.排序总结 1.直接插入排序 &#xff08;1&#xff09;思想 所谓插入排序&#xff0c;就是将待排序数据插入到已经有序的数据中&#xff0c;为了使插入后数据依然有序&#xff0c;就要选中一个合理的…

易腐产品的多车厢电动车路径问题(2023)

Multi-Compartment Electric Vehicle Routing Problem for Perishable Products ABSTRACT 该研究首先提出了一个异质车队、多车室的易腐产品电动汽车路由问题&#xff08;MCEVRP-PP&#xff09;。我们捕捉到MCEVRP-PP的许多实际需求和限制&#xff0c;如多个温度区、硬时间窗…

Yolov8有效涨点,添加多种注意力机制,修改损失函数提高目标检测准确率

目录 简介 CBAM注意力机制原理及代码实现 原理 代码实现 GAM注意力机制 原理 代码实现 修改损失函数 YAML文件 完整代码 &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; http://t.csdnimg.c…