文件對話框(QFileDialog)

在程式中會遇到開啟檔案或另存檔案的動作,在Qt中用QFileDialog來讓使用者選取或決定檔案名稱,這邊創建了一個QPushButton和一個QLineEdit ,當我們按下按鍵後,會自動跳出文件對話框,選好檔案後QLineEdit會顯示文件檔名(包含路徑)。


dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QPushButton>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
private:
    QPushButton *fileBtn;
    QLineEdit *fileLineEdit;
    QVBoxLayout *mainLayout;
private slots:
    void showFile();
};
#endif 

dialog.cpp

#include "dialog.h"
#include<QFileDialog>

Dialog::Dialog(QWidget *parent) : 
    QDialog(parent)
{
    setWindowTitle(QStringLiteral("文件對話框"));
    fileBtn =new QPushButton;
    fileBtn->setText(tr("開啟文件對話框"));
    fileLineEdit = new QLineEdit;                
    mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(fileBtn);
    mainLayout->addWidget(fileLineEdit);
    connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile()));
}

void Dialog::showFile()
{
    //限定只能開啟.cpp和.h的檔案,不同文件格式間需有::分隔
    QString s = QFileDialog::getOpenFileName(this,tr("開啟檔案"),"/","C++ files(*.cpp)::Head files(*.h)");
    fileLineEdit->setText(s);
}
  • getOpenFileName()可以限定開啟的檔案種類,這邊限定只能開啟.cpp和.h的檔案,不同的文件格式間需有::分隔。
  • getOpenFileName()會返回文件名,只要是支援格式的文件,有名稱之後就可開檔進行後續操作。

main.cpp

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

    return a.exec();
}

QFileDialog

QFileDialog

  • 楊政穎

    dialog.cpp 裡面的
    QString s = QFileDialog::getOpenFileName(this,tr(“開啟檔案"),"/","C++ files(*.cpp)::Head files(*.h)");
    分隔應該要用 ;; 我用冒號只能開啟後面的.h