Qt QFileDialog实现文件选择对话框

来源:互联网 发布:西门子ug软件侵权 编辑:程序博客网 时间:2024/05/18 02:16

目标:

使用Qt开发,能够点击菜单栏-打开文件,多选文件,获取并输出每个文件的路径

环境:

我在Qt项目中已经建立好了菜单栏,并为菜单栏关联好了动作的信号和槽,方法参考:http://blog.csdn.net/qiurisuixiang/article/details/7769640

使用Qt的QFileDialog类,实现文件选择对话框多选文件的功能,参考Qt 官方文档:http://doc.qt.io/qt-5/qfiledialog.html

实现:

mymenu.h

#ifndef MYMENU_H#define MYMENU_H#include "QMainWindow"class mymenu : public QMainWindow{    Q_OBJECT  // must include this if you use Qt signals/slotspublic:    //构造函数    explicit mymenu(QWidget *parent = 0);//QWidget *parent = 0 表示mymenu控件不是任何控件的子控件private slots:    void fileOpenActionSlot();//打开文件动作对应的槽函数private:    void createAction();     //创建动作    void createMenu();       //创建菜单    void createContentMenu();//创建上下文菜单    void selectFile();       //弹出选择文件对话框private:    QAction *fileOpenAction; //创建一个QAction指针,打开文件动作    QMenu *menu;             //创建一个QMenu指针};#endif // MYMENU_H
mymenu.cpp

#include "mymenu.h"#include "QMenu"#include "QMenuBar"#include "QAction"#include "QMessageBox"#include "QFileDialog"#include "QDebug"/***************************************** Qt中创建菜单和工具栏需要如下步骤:* 1. 建立行为Aciton* 2. 创建菜单并使它与一个行为关联* 3. 创建工具条并使它与一个行为关联*****************************************/mymenu::mymenu(QWidget *parent):QMainWindow(parent){   createAction();   createMenu();   createContentMenu();   this->resize(300,400);}void mymenu::createAction(){    //创建打开文件动作    fileOpenAction = new QAction(tr("打开文件"),this);    //摄者打开文件的快捷方式    fileOpenAction->setShortcut(tr("Ctrl+O"));    //设置打开文件动作提示信息    fileOpenAction->setStatusTip("打开一个文件");    //关联打开文件动作的信号和槽    connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(fileOpenActionSlot()));}void mymenu::createMenu(){    menu = this->menuBar()->addMenu(tr("文件"));    menu->addAction(fileOpenAction);}void mymenu::createContentMenu(){    this->addAction(fileOpenAction);    this->setContextMenuPolicy(Qt::ActionsContextMenu);}void mymenu::fileOpenActionSlot(){    //QMessageBox::warning(this,tr("提示"),tr("打开文件"),QMessageBox::Yes|QMessageBox::No);    selectFile();}/***************************************** Qt中使用文件选择对话框步骤如下:* 1. 定义一个QFileDialog对象* 2. 设置路径、过滤器等属性*****************************************/void mymenu::selectFile(){    //定义文件对话框类    QFileDialog *fileDialog = new QFileDialog(this);    //定义文件对话框标题    fileDialog->setWindowTitle(tr("打开图片"));    //设置默认文件路径    fileDialog->setDirectory(".");    //设置文件过滤器    fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));    //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles    fileDialog->setFileMode(QFileDialog::ExistingFiles);    //设置视图模式    fileDialog->setViewMode(QFileDialog::Detail);    //打印所有选择的文件的路径    QStringList fileNames;    if(fileDialog->exec())    {        fileNames = fileDialog->selectedFiles();    }    for(auto tmp:fileNames)        qDebug()<<tmp<<endl;}
main.cpp

#include "mymenu.h"#include <QApplication>#include <QProcess>#include <QMessageBox>int main(int argc, char *argv[]){    QApplication a(argc, argv);    mymenu m_menu;    m_menu.show();    return a.exec();}

效果:

Qt工程下载地址:http://download.csdn.net/detail/v_xchen_v/9838487

0 0
原创粉丝点击