Qt学习: QFileDialog和QMessageBox的用法和程序示例

*QMessageBox的用法:

    members:
    1.void setStandardButtons(QMessageBox::);   //设置按钮.
    2.void setText(QString);                    //设置内容.
    3.void setInformativeText(QString);        //设置重要内容.位于对话框底部的位置.按钮之上.
    4.void setIconPixmap(QPixmap);             //设置图片.可以自定义的.
    5.void setDefaultButton(QMessageBox::);     //设置默认被选中的按钮.
    6.void setIcon(QMessageBox::Icon);         //设置图标.默认5个选一个.
    7.void setButtonText(QMessageBox::, QString);   //给按钮重未名.
    8.void setDetailedText(QString);           //设置详细框内容.   
    9.void setCheckBox(QCheckBox*);           //加入一个QCheckBox的对象.

QFileDialog的用法:
QFileDialog::AcceptOpen. //打开文件,默认的.
QFileDialog::AcceptSave. //保存文件.

    members:
    1.void setAcceptMode(QFileDialog::);    //设置对话框的模式.
    2.int exec();                           //返回选择的状态.
    3.void setDefaultSuffix(QString);       //设置默认后缀.
    4.void setDirectory(QString);           //设置路径.
    5.QString getOpenFileName();            //获得打开的文件的名字.
    6.QString getSaveFileName();            //获得保存的文件的名字.
    7.QStringList selectedFiles();          //返回被选中的文件名.
    8.void setNameFilter(QString);          //设置过滤器.

先从Qt设计师中拖拽出所需要的布局和更改对象名:
这里写图片描述

以下是”c.cpp”内的代码:

#include "c.h"

c::c(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    ui.openFileButton->setText(QString::fromLocal8Bit("打开文件"));
    ui.saveFileButton->setText(QString::fromLocal8Bit("保存文件"));
    ui.messageButton->setText(QString::fromLocal8Bit("完全版对话框"));
    ui.messageButton_2->setText(QString::fromLocal8Bit("显示六种快捷调用"));

    connect(ui.openFileButton, SIGNAL(clicked()), this, SLOT(openFileDialogSlot()));
    connect(ui.saveFileButton, SIGNAL(clicked()), this, SLOT(saveFileDialogSlot()));
    connect(ui.messageButton, SIGNAL(clicked()), this, SLOT(printValidatorDialogSlot()));
    connect(ui.messageButton_2, SIGNAL(clicked()), this, SLOT(showAllDialogSlot()));
}

c::~c()
{

}
void c::openFileDialogSlot()
{
    //方法1:
    //定义一个QFileDialog的对象.
    QFileDialog temp(this);
    //设置它的标题.
    temp.setWindowTitle("open file");
    //设置它的模式为打开文件模式.
    temp.setAcceptMode(QFileDialog::AcceptOpen);
    //设置打开的路径.
    temp.setDirectory("c:/users/administrator/desktop");
    //设置过滤器.
    temp.setNameFilter(QString::fromLocal8Bit("文本文档(*.txt);;所有文件(*.*)"));
    //判断是否成功打开一个文件.
    if (temp.exec() == QDialog::Accepted)
    {
        //返回打开文件的绝对路径.
        QString path = temp.selectedFiles().at(0);
        //连接文件,并且打开文件.
        QFile *file = new QFile(path);
        bool ok = file->open(QIODevice::ReadOnly);
        //如果成功打开文件的话...进行以下操作.
        if (ok)
        {
            QTextStream s(file);
            //....文件已经打开,接下来可以从打开的文件内读取字符流.
        }
    }

    //方法2:
    //获取打开的文件的绝对路径.
    QString path = QFileDialog::getOpenFileName(this, "open file", "c:/users/administrator/desktop", QString::fromLocal8Bit("文本文档(*.txt);;所有文件(*.*)"));
    //如果路径不会空,则视为成功打开文件.如果路径为空,则视为未选择打开文件,可能点击取消.
    if (!path.isEmpty())
    {
        QFile *file = new QFile(path);
        bool ok = file->open(QIODevice::ReadOnly);
        if (ok)
        {
            QTextStream s(file);
            //....文件已经打开,接下来可以从打开的文件内读取字符流.
        }
    }
}
void c::saveFileDialogSlot()
{
    //方法1:
    QFileDialog temp(this);
    temp.setWindowTitle("save file");
    temp.setAcceptMode(QFileDialog::AcceptSave);
    temp.setDirectory("c:/users/administrator/desktop");
    temp.setNameFilter(QString::fromLocal8Bit("文本文档(*.txt);;所有文件(*.*)"));
    //设置默认添加后缀".txt".
    temp.setDefaultSuffix(".txt");
    if (temp.exec() == QDialog::Accepted)
    {
        QString path = temp.selectedFiles().at(0);
        QFile *file = new QFile(path);
        bool ok = file->open(QIODevice::WriteOnly);
        if (ok)
        {
            QTextStream s(file);
            //....文件已经打开,接下来向文件内写入字符流.
        }
    }

    //方法2:
    QString path = QFileDialog::getOpenFileName(this, "save file", "c:/users/administrator/desktop", QString::fromLocal8Bit("文本文档(*.txt);;所有文件(*.*)"));
    if (!path.isEmpty())
    {
        QFile *file = new QFile(path);
        bool ok = file->open(QIODevice::ReadOnly);
        if (ok)
        {
            QTextStream s(file);
            //....文件已经打开,接下来向文件内写入字符流.
        }
    }
}
void c::printValidatorDialogSlot()
{
    QCheckBox *s = new QCheckBox; 
    s->setText(QString::fromLocal8Bit("你是否喜欢Qt")); 
    QMessageBox temp;
    temp.setStandardButtons(QMessageBox::Ok | QMessageBox::No | QMessageBox::Cancel);
    temp.setWindowTitle(QString::fromLocal8Bit("输入情况"));
    temp.setText(QString::fromLocal8Bit("显示对话框")); 
    temp.setCheckBox(s);
    temp.setDetailedText(QString::fromLocal8Bit("这是一个用来提醒用户是否输入正确的对话框!"));
    temp.setButtonText(QMessageBox::Ok, QString::fromLocal8Bit("确定"));
    temp.setButtonText(QMessageBox::No, QString::fromLocal8Bit("不确定"));
    temp.setButtonText(QMessageBox::Cancel, QString::fromLocal8Bit("取消"));
    temp.setIconPixmap(QPixmap("1.png").scaled(100, 100)); 
    temp.setDefaultButton(QMessageBox::No);
    temp.setInformativeText(QString::fromLocal8Bit("输入正确!"));
    temp.exec();
}
void c::showAllDialogSlot()
{
    QMessageBox::aboutQt(this, "aboutQt");
    QMessageBox::about(this, "about", "about");
    QMessageBox::information(this, "information", "information");
    QMessageBox::warning(this, "warning", "warning");
    QMessageBox::question(this, "question", "question");
    QMessageBox::critical(this, "critical", "critical");
}

以下是”c.h”下的代码:

#ifndef C_H
#define C_H

#include <QtWidgets/QMainWindow>
#include "ui_c.h"
#include <QPushButton>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include <QFile>
#include <QCheckBox>


class c : public QMainWindow
{
    Q_OBJECT

public:
    c(QWidget *parent = 0);
    ~c();
private slots:
    void openFileDialogSlot();
    void saveFileDialogSlot();
    void printValidatorDialogSlot();
    void showAllDialogSlot();

private:
    Ui::cClass ui;
};

#endif // C_H

最后是”main.cpp”内的代码:

#include "c.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    c w;
    w.show();
    return a.exec();
}

注:本博客所有代码全部经过实际测试,成功编译运行后才发出来.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值