QT--模态对话框及非模态对话框


引用自:通俗讲解模态弹框和非模态弹框

弹框是一种重要的交互方式,主要用于完成信息传递和用户反馈两大功能。弹框很常见,但并不见的每一个设计师都可以100%的弄明白弹框这个概念。这篇文章是对弹框体系的一个简单梳理和总结,希望可以解决大家心中的一些疑惑。

模态弹框

模态弹框和非模态弹框最大的区别就是是否强制用户交互。模态弹框会打断用户的当前操作流程,用户不在弹框上操作的话,其余功能都使用不了。从这方面,我们可以看出来模态弹框的优缺点都十分的明显:优点是可以很好的获取的用户的视觉焦点,缺点是打断了用户的当前操作流程。模态弹框属于一种重量性反馈,一般用于用户进行重要的操作。常见的模态弹框种类有对话框(Dialog/Alter),动作栏(Actionbar/Actionsheet/ActionView)和浮层(Popover/Popup)。

非模态弹框

与模态弹框相比,非模态弹框最大的区别是不强制用户交互,也不会弹出半透明背景层,非模态弹框停留一段时间后会自己消失。所以相对于模态弹框来说,非模态弹框属于轻量型反馈,不会对用户造成太大的干扰。常见的非模态弹框有toast(hud)和snackbar。


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //点击新建 创建对话框
    connect(ui->actionNew,&QAction::triggered,this,[=](){

        //对话框分类  模态对话框   非模态对话框
        //模态对话框  不可以对其他窗口进行操作
        //非模态对话框  可以对其他窗口进行操作


        //模态对话框创建
//        QDialog dlg(this);
//        dlg.resize(120,30);
//        dlg.exec();

        //非模态对话框创建
//          QDialog *dlg2 = new QDialog(this);
//          dlg2->resize(120,30);
//          dlg2->show();
//          //设置 55号属性
//          dlg2->setAttribute(Qt::WA_DeleteOnClose);


        //QMessageBox对话框

        //错误提示对话框
        //QMessageBox::critical(this,"错误","critical");

        //信息提示对话框
        //QMessageBox::information(this,"信息","info");

        //询问提示对话框
        // 参数1   父窗口  参数2  标题  参数3  提示信息  参数4  按键类型  参数5  默认关联回车按键
//        if( QMessageBox::Save ==  QMessageBox::question(this,"询问","question" , QMessageBox::Save | QMessageBox::Cancel ,QMessageBox::Cancel))
//        {
//             qDebug()<<"点击的是保存";
//        }
//        else
//        {
//             qDebug()<<"点击的是取消";
//        }

        //警告提示对话框
        //QMessageBox::warning(this,"警告","warning");

        //颜色对话框
//         QColor color = QColorDialog::getColor(Qt::red);
//         qDebug() << color.red() << color.green() << color.blue() ;

        //文件对话框
//          QString fileName = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\zhangtao\\Desktop","(*.doc)");
//          qDebug () <<fileName;

        //字体对话框
        bool flag;
        QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
        qDebug() << "字体" << font.family().toUtf8().data() << "字号"<< font.pointSize()
                 << "是否加粗"<<font.bold() << "是否倾斜" << font.italic();

    });
}

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

具体的还可以看看这篇文章《QDialog 简介》。

发布了118 篇原创文章 · 获赞 297 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_32642107/article/details/105537304
今日推荐