1. 程式人生 > >QT——建立標準檔案對話方塊

QT——建立標準檔案對話方塊

標頭檔案:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

class QPushButton;
class QLineEdit;
class QGridLayout;

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    void createFileDialog();
    void addGridLayout();
    void registerConnect();

private slots:
    void showFile();

private:
    QPushButton *fileBtn;
    QLineEdit   *fileLineEdit;
    QGridLayout *mainLayout;
};

#endif

原始檔:

#include "dialog.h"
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QFileDialog>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(tr("各種標準對話方塊的例項"));
    createFileDialog();
    addGridLayout();
    registerConnect();
}

void Dialog::createFileDialog()
{
    fileBtn = new QPushButton;
    fileBtn->setText(tr("文字標準對話方塊例項"));
    fileLineEdit = new QLineEdit;
}

void Dialog::addGridLayout()
{
    mainLayout = new QGridLayout(this);
    mainLayout->addWidget(fileBtn, 0, 0);
    mainLayout->addWidget(fileLineEdit, 0, 1);
}

void Dialog::showFile()
{
    QString s = QFileDialog::getOpenFileName(this, "open file dialog", "/",
                    "C++ files(*.cpp)::C files(*.c)::Head files(*.h)");
    fileLineEdit->setText(s);
}

void Dialog::registerConnect()
{
    connect(fileBtn, SIGNAL(clicked()), this, SLOT(showFile()));
}

Dialog::~Dialog()
{
    if (fileBtn) delete fileBtn;
    if (fileLineEdit) delete fileLineEdit;
    if (mainLayout) delete mainLayout;
}

顯示結果:

按下Button,顯示結果: