Qt对话框

一.QDialog概述

概念:对话框是GUI程序中不可或缺的组成成分,很多不能或不适合放入主窗口的功能组件都必须放在对话框中设置。

对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或简洁的用户交互。

模态对话框:会阻塞同一应用程序中其他窗口的输入。

非模态对话框:不会阻塞同一应用程序中其他窗口的输入。

 

二.自定义对话框创建

头文件:#include<QDialog>

1.模态对话框:

QDialog dia;

dia.setWindowTitle("hello,dialog");

dia.exec();

2.非模态对话框:

①对话框要在堆上创建

②可以设置对话框关闭时自动销毁

QDialog *dia1 = new QDialog;

dia1->setAttribute(Qt::WA_DeleteOnClose);

dia1->setWindowTitle("hello,dialog");

dia1->show();

 

三.标准对话框

Qt提供了一系列内置的标准对话框,这些对话框可以用于实现各种常见的用户交互任务,从而简化应用程序的开发。以下是一些主要的内置对话框类型:

1. QColorDialog:用于选择颜色。

2. QFileDialog:用于选择文件或目录。

3. QFontDialog:用于选择字体。

4. QInputDialog:允许用户输入一个值,并返回该值。

5. QMessageBox:模态对话框,用于显示信息、询问问题、警告或错误提示。

6. QPageSetupDialog:为打印机提供纸张相关的选项。

7. QPrintDialog:配置打印机。

8. QPrintPreviewDialog:打印预览。

9. QProgressDialog:显示操作过程。

 

四.文件对话框

1.getOpenFileName和getOpenFileNames的参数:父类对象指针,文件对话框的标题,打开文件路径,文件过滤器。

2.文件过滤器写法:

"Images (*.png *.xpm *.jpg)"

"Images (*.png *.xpm *.jpg) ;; Text(*.txt)"

3.打开文件并将其路径输入文本编辑器中:

头文件要包含: #include<QFileDialog>

    resize(600,400);
    QPushButton *b1 = new QPushButton("打开一个文件",this);
    QPushButton *b2 = new QPushButton("打开多个文件",this);
    b1->move(100,100);
    b2->move(100,140);

    QTextEdit *edit = new QTextEdit("edit",this);
    edit->move(220,80);

    connect(b1,&QPushButton::clicked,this,[=](){

    QString fname = QFileDialog::getOpenFileName(this,
                                        tr("Open File"),
                                        "/E:/anac/Jupyter",
                                        tr("Images (*.png *.xpm *.jpg);;Text(*.txt)"));

        edit->append(fname);

});

    connect(b2,&QPushButton::clicked,this,[=](){

        QStringList fnames = QFileDialog::getOpenFileNames(this,
                                                           tr("Open File"),
                                                           "/E:/anac/Jupyter",
                                                           tr("Images (*.png *.xpm *.jpg)"));

        for(int i=0;i<fnames.size();i++)
        {
            edit->append(fnames[i]);
        }
    });

 

五.颜色对话框

1.getColor生成颜色对话框,返回值是一个颜色变量,如果在颜色对话框选择取消,返回值无效,反之则有效。

2.生成颜色对话框,选择颜色,设置编辑器字体颜色:

①获取现有调色板

②获取现有文字颜色

③选择颜色

④判断选择颜色是否有效,如果有效则改变编辑器字体颜色

头文件要包含: #include<QColorDialog>

    QPushButton *b3 = new QPushButton("选择颜色",this);
    b3->move(100,20);

    connect(b3,&QPushButton::clicked,this,[=](){

        QPalette pal = edit->palette();
        QColor ncolor = pal.color(QPalette::Text);
        QColor color = QColorDialog::getColor(ncolor,this,"choose color");
        if(color.isValid()){
            pal.setColor(QPalette::Text,color);
            edit->setPalette(pal);
        }

    });

 

六.选择字体对话框

1.getFont生成选择字体对话框,不能直接判断是否有效,一般根据getFont的第一个参数逻辑变量是否为True来判断。

2.生成选择字体对话框,选择字体,设置编辑器字体:

①设置逻辑变量

②获取现有文本框字体

③选择字体

④判断选择字体是否有效,如果有效则改变编辑器字体

头文件要包含: #include<QFontDialog>

    QPushButton *b4 = new QPushButton("选择字体",this);
    b4->move(100,60);

    connect(b4,&QPushButton::clicked,this,[=](){

        bool ok;
        QFont nowfont = edit->font();
        QFont font = QFontDialog::getFont(&ok,nowfont,this);
        if(ok){
            edit->setFont(font);
        }

    });

 

七.消息对话框

QMessageBox生成消息对话框:

头文件要包含: #include<QMessageBox>

    QPushButton *b5 = new QPushButton("消息对话",this);
    b5->move(100,180);

    connect(b5,&QPushButton::clicked,this,[=](){

        //QMessageBox::critical(this,"error","程序错误");
        //QMessageBox::warning(this,"warning","程序警告");
        //QMessageBox::information(this,"message","程序正常");
        //QMessageBox::about(this,"name","内容");   //自定义消息框
        //QMessageBox::aboutQt(this,"aboutQt");
        QMessageBox::StandardButton res;
        res = QMessageBox::question(this,"提示消息框","文件已修改,是否保存",
QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel|QMessageBox::NoButton);
        if(res == QMessageBox::Yes)
            qDebug()<<"已保存";
        else if(res == QMessageBox::No)
            qDebug()<<"不保存";
        else
            qDebug()<<"取消操作";


    });

 

八.输入对话框

QInputDialog:输入文本/整形数据/浮点型数据…对话框

1.生成输入文字对话框:

头文件要包含: #include<QInputDialog>

    QPushButton *b6 = new QPushButton("输入",this);
    b6->move(100,220);

    connect(b6,&QPushButton::clicked,this,[=](){

        QString text = QInputDialog::getText(this,"文本对话框","请输入内容");
        if(!text.isEmpty())
            edit->append(text);

    });

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值