1. 程式人生 > >QT之開啟檔案對話方塊,獲取檔名

QT之開啟檔案對話方塊,獲取檔名

檔案得主要目錄如下圖:

再mainwindow.ui中只加了一個pushbutton

dialog.cpp中沒有任何操作 

 

最後付下主要程式碼:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_dialog.h"
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    QString fileFull, fileName, filePath,fileSuffix;
    QFileInfo fileinfo;
    fileFull = QFileDialog::getOpenFileName(this,tr("file"),"/",tr("text(*.txt)"));  //獲取整個檔名
    //fileFull = E:\QtCode\newExample\myTry\新建文字文件.txt
 
    //獲取檔案資訊
    fileinfo = QFileInfo(fileFull);
    //fileinfo = E:\QtCode\newExample\myTry\新建文字文件.txt
 
    //獲取檔名字
    fileName = fileinfo.fileName();
    //fileName = 新建文字文件.txt
 
    //獲取檔案字尾
    fileSuffix = fileinfo.suffix();
    //fileSuffix = txt
 
    //獲取檔案絕對路徑
    filePath = fileinfo.absolutePath();
    if(!fileFull.isNull())
    {
       QFile file(fileFull);
       if(!file.open(QFile::ReadOnly | QFile::Text))
        {
            QMessageBox::warning(this,tr("Error"),tr("read file error:&1").arg(file.errorString()));
            return;
        }
            QTextStream in(&file);
            QApplication::setOverrideCursor(Qt::WaitCursor);
 
            dialog = new Dialog(this);
            dialog->ui->lineEdit->setText(fileFull);
            dialog->ui->lineEdit_2->setText(fileName);
            dialog->ui->textEdit->setPlainText(in.readAll());
 
            QApplication::restoreOverrideCursor();
            dialog->show();
    }
    else
    {
       qDebug()<<"cancel";
    }
//            FileDialog::getOpenFileName(this,
//                                                                tr("Open File"),
//                                                                "/",
//                                                                tr("All Files (*.*)"));
//                QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(fileName).absoluteFilePath()));
 
}