【QT学习笔记003】各大对话框调用函数应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014576936/article/details/88670664

目录

1、颜色对话框

2、文件对话框

3、字体对话框

4、输入对话框

5、消息对话框

6、进度对话框

7、错误消息对话框

8、向导对话框



1、颜色对话框

#include<QColorDialog>

//--------------------------------------------------------------------
void MyWidget001::on_colorPushButton_clicked()
{
    QColor color = QColorDialog::getColor(Qt::red,this,tr("1234567890"),QColorDialog::ShowAlphaChannel);
    qDebug()<<"color1:"<<color;
}

void MyWidget001::on_color2PushButton_9_clicked()
{
    QColorDialog dialog(Qt::red);
    dialog.setOption(QColorDialog::ShowAlphaChannel);
    dialog.exec();
    QColor color = dialog.currentColor();
    qDebug()<<"color2:"<<color;

}

2、文件对话框

很多应用中,我们都会涉及到设置文件的存储路径以及读取路径,即获取一个文件夹路径(如:”C:/Users/Administrator/Desktop”)来向里面写入文件或者从里面读取文件,下面是一个例子,做简单的路径获取足够了:

QString file_path = QFileDialog::getExistingDirectory(this,"请选择模板保存路径...","./");  
if(file_path.isEmpty())  
{  
    return;  
}
else
{  
    qDebug() << file_path << endl;  
}
  •  

这里用到的 getExistingDirectory函数只填了前面三个参数,后面的参数使用默认的即可,完整的参数列表如下:

QString getExistingDirectory(
    QWidget * parent = 0, 
    const QString & caption = QString(), 
    const QString & dir = QString(), 
    Options options = ShowDirsOnly)
  • 这里只简单说一下第三参数dir,这个参数可以指定一个路径(绝对/相对皆可),在对话框打开的时候默认先到这个路径中进行继续选择。
#include<QFileDialog>
void MyWidget001::on_pushButton_2_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,tr("这个是打开单个文件哦"),"C:",tr("头文件(*h);;"
           "程序文件(*c *cpp *o);;图片文件(*png *jpg *jpeg);;文本文件(*txt);;工程文件(*pr *pro *proj);;乱七八糟文件(*)"));
   qDebug()<<"fileName : "<<fileName;
}
//--------------------------------------------------------------------
void MyWidget001::on_pushButton_10_clicked()
{
    QString fileNameSave = QFileDialog::getSaveFileName(this,tr("这个是保存文件、另存为 哦"),"C:",
                      tr("头文件(*h *o);;程序文件(*c *cpp *o);;所有文件(*)"));
    qDebug()<<"fileNameSave"<<fileNameSave;

}
//--------------------------------------------------------------------
void MyWidget001::on_pushButton_11_clicked()
{
     QStringList fileNames = QFileDialog::getOpenFileNames(this,tr("这个可以打开多个文件哦"),"C:",
      tr("图片文件(*png *jpg *jpeg);;视频文件(*mp3 *mp4 *rmvb *mov);;文本文件(*txt);;程序文件(*c *cpp *h *o);;所有文件(*)"));
     qDebug()<<"fileNames:"<<fileNames;
     //注意用的是qstringlist,别搞错了。
}
//--------------------------------------------------------------------
void MyWidget001::on_pushButton_12_clicked()
{
    //很多应用中,我们都会涉及到设置文件的存储路径以及读取路径,即获取一个文件夹路径
    //(如:”C:/Users/Administrator/Desktop”)来向里面写入文件或者从里面读取文件.
    //这里用到的 getExistingDirectory函数只填了前面三个参数,后面的参数使用默认的即可,完整的参数列表如下:
    /*
     * QString getExistingDirectory(
     *     QWidget * parent = 0,
     *     const QString & caption = QString(),
     *     const QString & dir = QString(),
     *     Options options = ShowDirsOnly)
    */

    QString filePath = QFileDialog::getExistingDirectory(this,tr("请选择保存路径。。。。"),"./");
    if(filePath.isEmpty())
    {
       return;
    }
    else
    {
        qDebug()<<"filePath : "<<filePath;
        qDebug()<<filePath<<endl;
    }

}

3、字体对话框

#include<QFontDialog>
void MyWidget001::on_frontPushButton_5_clicked()
{
//ok记录是否按下按钮。
//如果按下,就使用新字体。
//负责输出信息。
    bool ok;
    QFont font = QFontDialog::getFont(&ok, this);
    if(ok)
    {

        ui->frontPushButton_5->setFont(font);
    }
    else
    {
        qDebug()<<tr("没有字体选择")<<endl;

    }
}

4、输入对话框

#include<QInputDialog>

void MyWidget001::on_inputPushButton_6_clicked()
{
    bool ok;
    QString string = QInputDialog::getText(this,tr("输入字符串对话框"),tr("请输入用户名:"),QLineEdit::Normal,tr("admin"),&ok);
    if(ok)
    {
        qDebug()<<"string:"<<string<<endl;
    }
    int value01 =QInputDialog::getInt(this,tr("输入整数对话框:"),tr("请输入-1000到1000之间的数值:"),100,-1000,1000,10,&ok);
    if(ok)
    {
        qDebug()<<"value01"<<value01;
    }
    int value02 = QInputDialog::getDouble(this,tr("输入浮点数对话框:"),tr("请输入-1000到1000直接按的数值:"),0.00,-1000,1000,2,&ok);
    if(ok)
    {
        qDebug()<<"value02:"<<value02;
    }
    QStringList items;
    items<<tr("条目1")<<tr("条目2");
    QString item = QInputDialog::getItem(this,tr("输入条目对话框"),tr("请选择输入一个条目"),items,0,true,&ok);
    if(ok)
    {
        qDebug()<<"item:"<<item;
    }



}

5、消息对话框

#include<QMessageBox>

void MyWidget001::on_MessagePushButton_3_clicked()
{
    int ret01 = QMessageBox::question(this,tr("问题对话框"),tr("你了解我们?"),QMessageBox::Yes,QMessageBox::No);
    if(ret01 == QMessageBox::Yes)
    {
        qDebug()<<tr("问题!!!!!");
    }
    int ret02 = QMessageBox::information(this,tr("提示对话框"),tr("这是书 啊 啊啊!!"),QMessageBox::Ok);
    if(ret02 == QMessageBox::Ok)
    {
        qDebug()<<tr("提示啊啊啊啊啊啊!!!");
    }
    int ret03 = QMessageBox::warning(this,tr("这是警告!!!"),tr("不能提前结束!!"),QMessageBox::Abort);
    if(ret03 == QMessageBox::Abort)
    {
        qDebug()<<tr("焦其宁警告!");
    }
    int ret04 = QMessageBox::critical(this,tr("现在是严重浸警告对话框"),tr("发现严重错误,立刻关闭!!!"),QMessageBox::YesAll);
    if(ret04 == QMessageBox::YesAll)
    {
        qDebug()<<tr("错误uaa啊啊");
    }

    QMessageBox::about(this,tr("关于对话框"),tr("致力于中国海洋大学"));

}

6、进度对话框

#include<QProgressDialog>
void MyWidget001::on_levelPushButton_7_clicked()
{
    QProgressDialog dialog(tr("文件复制进度:"),tr("取消"),0,50000,this);
    dialog.setWindowTitle("进度对话框");
    dialog.setWindowModality(Qt::WindowModal);
    dialog.show();
    for(int i = 0;i<50000;i++)
    {
        dialog.setValue(i);
        QCoreApplication::processEvents();
        if(dialog.wasCanceled()) break;

    }
    dialog.setValue(50000);
    qDebug()<<tr("复制结束");


}

7、错误消息对话框

#ifndef MYWIDGET001_H
#define MYWIDGET001_H

#include <QWidget>

namespace Ui {
class MyWidget001;
}

class QErrorMessage;


class MyWidget001 : public QWidget
{
    Q_OBJECT

    QErrorMessage *errordlg;


public:
    explicit MyWidget001(QWidget *parent = nullptr);
    ~MyWidget001();

#include<QErrorMessage>



MyWidget001::MyWidget001(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget001)
{
    ui->setupUi(this);
    errordlg = new QErrorMessage(this);
}

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


void MyWidget001::on_errorMessagePushButton_4_clicked()
{
    errordlg->setWindowTitle(tr("错误消息对话框"));
    errordlg->showMessage(tr("这里是出错的信息"));
}

8、向导对话框

.h中:声明函数;


#include <QWizard>

private:
    Ui::MyWidget001 *ui;
    QWizardPage *creatPage01();
    QWizardPage *creatPage02();
    QWizardPage *creatPage03();
cpp中队函数进行定义实现


QWizardPage *MyWidget001::creatPage01()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle(tr("介绍"));
    qDebug()<<"004";
    return page;

}
QWizardPage *MyWidget001::creatPage02()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle(tr("永华选择新信息"));
    qDebug()<<"005";
    return page;

}


QWizardPage *MyWidget001::creatPage03()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle(tr("结束了"));
    qDebug()<<"006";
    return  page;
}
信号和槽中 进行调用:
void MyWidget001::on_directPushButton_8_clicked()
{
    QWizard wizard(this);
    wizard.setWindowTitle(tr("想打对话狂啊 啊啊"));
    wizard.addPage(creatPage01());
    qDebug()<<"001";
    wizard.addPage(creatPage02());
    qDebug()<<"002";
    wizard.addPage(creatPage03());
    qDebug()<<"003";
    wizard.exec();
}
运行结果:

004
001
005
002
006
003

end

猜你喜欢

转载自blog.csdn.net/u014576936/article/details/88670664