QT笔记--标准对话框与自定义对话框

QT标准对话框

QT提供了默认的五种对话框,分别为以下对话框类
在这里插入图片描述
其中从上到下分别为
1、文件对话框
2、颜色对话框
3、字体对话框
4、输入对话框
5、消息框

标准对话框调用方式

void Dialog::on_btnOpen_clicked()
{ //选择单个文件
    QString curPath=QDir::currentPath();//获取系统当前目录
    //获取应用程序的路径
    QString dlgTitle="选择一个文件"; //对话框标题
    QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
    QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
    if (!aFileName.isEmpty())
        ui->plainTextEdit->appendPlainText(aFileName);
}

如代码所示,定义对话框的目录,标题,文件过滤器,然后使调用QFileDialog类下的getOpenFileName()函数,弹出对话框供用户选择,然后返回文件名。
其他标准对话框使用方式大同小异。

自定义对话框框架

在这里插入图片描述

自定义对话框创建步骤

1、使用Qt Creator 的菜单项 File->New File or Project,创建一个Application项目Qt Widgets Application,选择基类为QMainWindow。
2、使用Qt Creator 的菜单项 File->New File or Project,创建一个QT类下的Qt Designer Form Class(Qt设计师界面类),选择Dialog without buttons。类名写为QWDialogSize。
3、在qwdialogsize.ui里面,自定义你的弹窗界面,并在qwdialogsize.cpp里面,编写你的类函数。
4、在mainwindow.cpp里面,包含自定义对话框类的头文件#include “qwdialogsize.h”。
5、接下来,在mainwindow.cpp里面,就可以使用QWDialogSize类去 定义对象并调用对话框了。

举例:

创建的对话框如图所示:

一、qwdialogsize.cpp下的函数

int QWDialogSize::rowCount()
{ //用于主窗口调用获得行数的输入值
    return ui->spinBoxRow->value();
}

int QWDialogSize::columnCount()
{//用于主窗口调用获得列数的输入值
    return ui->spinBoxColumn->value();
}

void QWDialogSize::setRowColumn(int row, int column)
{ //初始化数据显示
    ui->spinBoxRow->setValue(row);
    ui->spinBoxColumn->setValue(column);
}

二、mainwindow.cpp下的对话框对象定义以及调用

//模态对话框,动态创建,用过后删除
    QWDialogSize *dlgTableSize=new QWDialogSize(this);
    Qt::WindowFlags flags=dlgTableSize->windowFlags();
    dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint);
    dlgTableSize->setRowColumn(1,1);
    int ret=dlgTableSize->exec () ;// 以模态方式显示对话框
    if (ret==QDialog::Accepted)
    { //OK按钮被按下,获取对话框上的输入
        int cols=dlgTableSize->columnCount();
        int rows=dlgTableSize->rowCount();
    }
    delete dlgTableSize;

三、解析:在qwdialogsize.cpp中,定义了三个函数:

int QWDialogSize::rowCount()            //用来获取弹窗界面上的行设置。
int QWDialogSize::columnCount()         //用来获取弹窗界面上的列设置。
void QWDialogSize::setRowColumn(int row, int column)      //用来设置弹窗上行列输入框的默认值。

之后在mainwindow.cpp中,

QWDialogSize *dlgTableSize=new QWDialogSize(this);          //定义了一个QWDialogSize类型的对象。
dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint);     //设置窗口属性
int ret=dlgTableSize->exec () ;                          //显示对话框并获取对话框的结果。

对话框如下图:
在这里插入图片描述

参考资料:http://c.biancheng.net/view/1871.html


版权声明:本文为weixin_40293570原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。