天天看点

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

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()函数,弹出对话框供用户选择,然后返回文件名。

  其他标准对话框使用方式大同小异。

自定义对话框框架

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

自定义对话框创建步骤

  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 () ;                          //显示对话框并获取对话框的结果。
           

  对话框如下图:

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

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

继续阅读