如何自学qt(4)——对话框

本文介绍了Qt编程中对话框的两种类型:模态和非模态,并提供了创建这两种对话框的代码示例。模态对话框在打开时阻止用户与应用程序其他部分交互,而非模态对话框则允许用户同时操作多个窗口。此外,还详细讲解了如何使用Qt内置的标准对话框,如QMessageBox,以及颜色、文件和字体选择对话框的使用方法。通过这些对话框,开发者可以更便捷地实现用户交互功能。
摘要由CSDN通过智能技术生成

1,触发对话框

在qt中,对话框分成两种
一种是模态对话框,简单的说,就是点开后无法忽视它,必须要关闭才能操作其他窗口
【如果强制操作会发出duang的声音】
另一种是非模态对话框,跟上面那个相反,是一个无所谓的对话框。
具体的话……
先在ui里创建两个触发
在这里插入图片描述
一个叫new,一个叫open
用new触发模态对话框的生成,代码如下

connect(ui->actionnew,&QAction::triggered,[=](){
      //对话框分类
      //模态对话框(不可以对其他对话框操作),非模态(可以)
      //模态创建 阻塞
      QDialog dlg(this);
      dlg.resize(200,100);
      dlg.exec();
      qDebug() << "success";
    });

需要说明几点
1,运用了信号槽和匿名函数
2,触发点击使用的是triggered,因为没有click
3,不写=会报错
4,生成模态对话框需要使用exec,这是一种阻塞函数——换言之,函数运行到这里就停住了,所以在关闭窗口后控制台才会出现“success”
5,修改大小是因为默认的对话框太小,不改会弹警告

用open触发非模态的对话框,代码如下

connect(ui->actionopen,&QAction::triggered,[=]()
    {
        //非模态对话框
        QDialog *dlg2 = new QDialog(this);
        dlg2->resize(200,100);
        dlg2->show();
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        qDebug() << "success2";
    });

需要说明的几点:
1,要用new申请堆上的内存,不然,函数结束后栈内存回收,会出现窗口闪一下就消失的鬼片效果……
2,但是,堆上内存不会被自动回收,所以我们要设置一个状态参量,设定它关闭窗口时回收
【attribute这里翻译成状态,后面的枚举值是去帮助里面查的】

2,标准对话框

所谓标准对话框,是Qt内置的一系列对话框,用于简化开发
总所周知,qt是面向帮助文档编程的
所以……
在这里插入图片描述
先搜个文档康康。
在文件里添加头文件,然后实现一下试试
这个可以直接调用静态函数,所以举一个做例子

connect(ui->actionnew,&QAction::triggered,[=](){
      //QMessageBox::critical(this,"first","错误");
      //QMessageBox::information(this,"second","信息");
       if(QMessageBox::question(this,"third","是否要这样?",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel) == QMessageBox::Save)
            qDebug() << "save";
    });

根据编译器的提示和上面的帮助文档,我们可以知道这个函数的几个参数含义
比如question 从左到右为父类,名称,文本框内容,下面选择摁钮的文本和默认摁钮
在这里插入图片描述
其他函数类似
返回值是两个选择摁钮的枚举值

3,其他常见对话框

①颜色对话框
这个对话框还蛮有意思的
顺便一提,在qt中,颜色有三个参数,分别是red(),green()和blue()
而且这个对话框有自己的头文件

#include <QColorDialog>
connect(ui->actionnew,&QAction::triggered,[=]()
    {
         QColor color =QColorDialog::getColor(QColor(255,0,0));
         qDebug() << color.red();
    });

然后就会弹出这样一个对话框
在这里插入图片描述
【看见了吗?输入的255,0,0是初始值哦】
用这个对话框可以选定颜色
②选中文件对话框
同样需要头文件

#include <QFileDialog>
connect(ui->actionnew,&QAction::triggered,[=]()
    {
         //文件对话框
         QFileDialog::getOpenFileName(this,"open","C:\\Users\\井室羽\\Desktop","*.doc");
    });

三个参数,父类,文件路径和筛选条件(可不加)
返回值是QString,即选中的文件路径
③字体对话框
跟颜色对话框比较类似,顺便一提字体的英文是FONT

#include <QFontDialog>
 //字体对话框
        bool flag;
        QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
        qDebug() << font.family().toUtf8().data();

QFont就是字体的类,里面有family(字体),pointSize(大小),bold(是否加粗),italic(是否倾斜)都可以打印出来
另:打印字体需要转一下格式,这个跟之前一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值