当前位置 博文首页 > liuguangshibei的博客:QT学习——day7

    liuguangshibei的博客:QT学习——day7

    作者:[db:作者] 时间:2021-08-13 12:54

    QT学习——day7

    对话框界面

    对话框界面的模态显示

     TestDialog *dlg=new TestDialog(this);
    //     //Dialog窗口不能依附父窗口实现,只能单独显示
    //     //模态,exec()阻塞程序的执行,进行模态显示
      dlg->exec();
    

    对话框模态显示的关闭

    对话框的模态显示需调用函数.exec(),该函数的返回值为int类型。

    1.第一种模态对话框的关闭(隐藏)方式:ACCepted();

    调用该函数实现将当前的对话框窗口隐藏,且对应的枚举值为1,意味着当执行该函数时.exec()函数生命周期结束,且返回值为int 1。

    2.第二种模态对话框的关闭(隐藏)方式:REjected();

    调用该函数实现将当前的对话框窗口隐藏,且对应的枚举值为0,意味着当执行该函数时.exec()函数生命周期结束,且返回值为int 0。

    3…第二种模态对话框的关闭(隐藏)方式:done(int);

    调用该函数实现将当前的对话框窗口关闭,且该函数中传参的值决定.exec()函数的返回值为多少,即若传参为int 1,则实现ACCepted方法,若传参为int 0,即实现REjected方法。若传参为其他int型,则.exec()函数将返回对应的值,并将对话框关闭 。

    QMessageBox(消息对话框)

    QMessageBox是基于对话框类的一类弹出窗口,有icon,title,text,button四个属性,并且可以根据需求进行修改。

    实例如下:这段代码中演示了常见的四种弹出窗口:

    void Mywidget::on_jumpbtn_clicked()
    {
        //第一个参数为指向父窗口的指针
        //第二个参数为title值
        //第三个为text值
        QMessageBox::about(this,"关于","一个消息的提示框");//about窗口,icon与父窗口的icon相同
        QMessageBox::critical(this,"错误!","这是一个错误!");//进行错误提示,icon固定
        if(QMessageBox::question(this,"问题?","要这样做吗?",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Save)==QMessageBox::Save)//询问窗口,返回值为QMessageBox,可以根据用户的选择进行判断,第四个参数为button的枚举,有多种类型提供修改,第五个参数是默认选中的按钮。
        {
                                 QMessageBox::information(this,"信息提示","那就这样吧");
    }//信息提示窗口
    
        else {
            QMessageBox::warning(this,"警告!!!","怎么可以这样!!!");//警告窗口
        }
    }
    

    QFileDialog(文件操作窗口)

    基于QDialog的文件操作窗口,通常返回值都是QString(文件所在路径)。此处转载苏老师笔记(侵删)。

    /*
    通用参数:
    	- parent: 当前对话框窗口的父对象也就是父窗口
    	- caption: 当前对话框窗口的标题
    	- dir: 当前对话框窗口打开的默认目录
    	- options: 当前对话框窗口的一些可选项,枚举类型, 一般不需要进行设置, 使用默认值即可
    	- filter: 过滤器, 在对话框中只显示满足条件的文件, 可以指定多个过滤器, 使用 ;; 分隔
    		- 样式举例: 
    			- Images (*.png *.jpg)
    			- Images (*.png *.jpg);;Text files (*.txt)
    	- selectedFilter: 如果指定了多个过滤器, 通过该参数指定默认使用哪一个, 不指定默认使用第一个过滤器
    */
    // 打开一个目录, 得到这个目录的绝对路径
    [static] QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly);
    
    // 打开一个文件, 得到这个文件的绝对路径
    [static] QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
    
    // 打开多个文件, 得到这多个文件的绝对路径
    [static] QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
    
    // 打开一个目录, 使用这个目录来保存指定的文件
    [static] QString QFileDialog::getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
    

    实例化演示:

    void Mywidget::on_filebtn_clicked()
    {
    
        QStringList filenames=QFileDialog::getOpenFileNames(
                    this,tr("打开文件"),"F:\\流光拾贝",tr("(*.png);;(*.jpg)"));
        QString names;
        for(int i=0;i!=filenames.size();++i)
        {
            names+=filenames.at(i);
        }
        QMessageBox::about(this,"文件输出","该目录中的文件名为:"+names);
    }
    

    QFontDialog(字体对话框)

    1.调用静态成员函数进行字体修改。

    2.获取一个实例化的对象。

    3.调用setFont( QFont)函数对指定窗口中的字体进行字体修改。

    void Mywidget::on_settextbtn_clicked()
    {
        bool ok;//字体是否被修改的布尔值
        QFont font = QFontDialog::getFont(&ok, QFont("Times", 12), this);
        if (ok) {//返回的是true
           ui->label->setFont(font);//修改当前窗口中的字体
            // QApplication::setFont(font);改变所有窗口里的字体
        } else {
           QMessageBox::warning(this,"警告!","字体未修改!");
        }
    }
    
    cs
    下一篇:没有了