码迷,mamicode.com
首页 > 其他好文 > 详细

第19课 Qt中的标准对话框(上)

时间:2016-05-01 20:34:57      阅读:499      评论:0      收藏:0      [点我收藏+]

标签:

1. 标准对话框

(1)Qt为开发者提供了一些可复用的对话框类型

(2)Qt提供的可复用对话框全部继承自QDialog类

(3)Qt中的标准对话框遵循相同的使用方式(三板斧)

//1、定义对话框对象(第1板斧)
DialogType dlg(this);

//2、设置对话框属性(第2板斧)
dlg.setPropertyXXX(value);

if(dlg.exec() == DialogType::value) //3.打开对话框(第3板斧)
{
    //4、获取对话框数据
    Type v = dlg.getDialogValue();
    
    //处理对话框数据
}

2. 消息对话框:QMessageBox

(1)消息对话框是应用程序中最常见的界面元素

(2)消息对话框主要用于:为用户提示重要信息或强制用户进行操作选择

(3)消息对话框的使用方式(见下面实例分析)

(4)消息对话框中的实用静态函数

  ①QMessageBox::question(…) //创建带有“是/否”按钮的消息框

  ②QMessageBox::information(…) //创建带有“确定”或“取消”按钮的消息框

  ③QMessageBox::warning(…)     //创建一个警告对话框

  ④QMessageBox::critical(…)    //创建一个严重错误对话框

  ⑤QMessageBox::about(…)       //创建“关于”对话框

3. 文件对话框:QFileDialog

(1)文件对话框常用于以下情况

  ①Open Mode:打开一个外部文件

  ②Save Mode:将当前内容存储于指定的外部文件中

(2)文件对话框的使用方式(见下面的实例分析)

(3)文件类型过滤器:setNameFilter(QString&);

  格式:显示名(*.后缀1 *.后缀2… *.后缀N),如

  "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)"

(4)QFileDialog中实用函数

  ①QFileDialog::getOpenFileName;

  ②QFileDialog::getOpenFileNames;

  ③QFileDialog::getSaveFileName

【编程实验】消息对话框和文件对话框使用实例

技术分享

//main.cpp

#include <QApplication>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

//Widget.h

#ifndef _WIDGET_H_
#define _WIDGET_H_

#include <QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton SimpleMsgBtn;
    QPushButton CustomMsgBtn;
    QPushButton OpenFileBtn;
    QPushButton SaveFileBtn;

private slots:
    void SimpleMsgBtn_Clicked();
    void CustomMsgBtn_Clicked();
    void OpenFileBtn_Clicked();
    void SaveFileBtn_Clicked();

public:
    Widget(QWidget* parent = 0);
    ~Widget();
};

#endif  //_WIDGET_H_

//Widget.cpp

#include "Widget.h"
#include <QMessageBox>
#include <QFileDialog>
#include <QDebug>

Widget::Widget(QWidget* parent):QWidget(parent),
     SimpleMsgBtn(this),CustomMsgBtn(this),OpenFileBtn(this),SaveFileBtn(this)
{
    SimpleMsgBtn.setText("Simple MessageBox");
    SimpleMsgBtn.move(20, 20);
    SimpleMsgBtn.resize(160, 30);

    CustomMsgBtn.setText("Custom MessageBox");
    CustomMsgBtn.move(20, 70);
    CustomMsgBtn.resize(160, 30);

    OpenFileBtn.setText("OpenFile Dialog");
    OpenFileBtn.move(20, 120);
    OpenFileBtn.resize(160, 30);

    SaveFileBtn.setText("SaveFile Dialog");
    SaveFileBtn.move(20, 170);
    SaveFileBtn.resize(160, 30);

    resize(200, 200);
    setFixedSize(200, 220);

    connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SimpleMsgBtn_Clicked()));
    connect(&CustomMsgBtn, SIGNAL(clicked()), this, SLOT(CustomMsgBtn_Clicked()));
    connect(&OpenFileBtn,  SIGNAL(clicked()), this, SLOT(OpenFileBtn_Clicked()));
    connect(&SaveFileBtn,  SIGNAL(clicked()), this, SLOT(SaveFileBtn_Clicked()));
}


void Widget::SimpleMsgBtn_Clicked()
{
    QMessageBox msg(this);
    msg.setText("This is a MessageBox!");
    msg.exec();
}

void Widget::CustomMsgBtn_Clicked()
{
    QMessageBox msg(this);

    msg.setWindowTitle("Custom Messagebox");
    msg.setText("This is a detail MessageBox");
    msg.setIcon(QMessageBox::Information);
    msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel |
                           QMessageBox::YesToAll);

    //information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
    //int ret = QMessageBox::information(this, "Custom MessageBox",
    //                                   "This is a detail MessageBox"),
    //                                    QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll);

    if(msg.exec() == QMessageBox::Ok)
    {
        qDebug() << "Ok button is Clicked!";
    }
}

void Widget::OpenFileBtn_Clicked()
{
    QFileDialog dlg(this);

    dlg.setAcceptMode(QFileDialog::AcceptOpen);
    //Qt5.5以下用dlg.setFilter
    dlg.setNameFilter("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)");
    dlg.setFileMode(QFileDialog::ExistingFiles); //注意:复数形式,表达打开多个文件

    if(dlg.exec() == QFileDialog::Accepted)
    {
        QStringList fs = dlg.selectedFiles();
        for(int i=0; i<fs.count(); i++)
        {
            qDebug() << fs[i];
        }
    }
}

void Widget::SaveFileBtn_Clicked()
{
    QFileDialog dlg(this);

    dlg.setAcceptMode(QFileDialog::AcceptSave);
    dlg.setNameFilter("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)");

    if(dlg.exec() == QFileDialog::Accepted)
    {
        QStringList fs = dlg.selectedFiles();

        for(int i=0; i<fs.count();i++)
        {
            qDebug() << fs[i];
        }
    }
}

Widget::~Widget()
{

}

4. 小结

(1)Qt中提供了多个可复用的对话框类型,它们都继承于QDialog,同时遵循相同的使用方式

(2)QMessageBox用于提示重要的程序信息

(3)QFileDialog用于获取系统中的文件路径

 

第19课 Qt中的标准对话框(上)

标签:

原文地址:http://www.cnblogs.com/5iedu/p/5451013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!