QT 打开新的文件选择对话框,得到选择的文件目录

 总共三个文件,main.cpp  ,  widget.cpp  , widget.h , 亲测过的。

QT5可以实现手动拖拽一些按钮过来,然后链接到槽函数;我里面涉及的  ui->***  ,就是在界面设计里面直接拖拽过来的一些按钮,然后自己定义的名字,这些名字在界面设计的右边直接修改就好了,不用在.h里面中特意命名;

widget.cpp

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

#include "widget.h"
#include "ui_widget.h"

#include "QMenu"
#include "QDebug"

#include <QMouseEvent>
//头文件




Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->resize(500,500);

    //设置背景图片
    this->setAutoFillBackground(true); // 这句要加上, 否则可能显示不出背景图.
    QPalette palette = this->palette();
    palette.setBrush(QPalette::Window,
                     QBrush(QPixmap("/Users/mac/Desktop/QTpro/3.jpeg").scaled(// 缩放背景图.
                 this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));             // 使用平滑的缩放方式
    this->setPalette(palette);

}

Widget::~Widget()
{
    delete ui;
}



void Widget::on_file_clicked()
{
      path = selectFilename();
      if(path != nullptr)
      {
          ui->openfiletext->setText(path);
      }
      //得到path后读取path内dcm文档的病人名字
      ui->name->setText("good");

}

 QString Widget::selectFilename()
{

    QFileDialog *fileDialog = new QFileDialog(this);//创建一个QFileDialog对象,构造函数中的参数可以有所添加。
    fileDialog->setWindowTitle(tr("打开文件"));//设置文件保存对话框的标题
    //设置默认文件路径
    fileDialog->setDirectory(".");
    //设置文件过滤器

    fileDialog->setNameFilter(tr("Images(*.dcm *.jpg *.jpeg *.bmp *.mhd *.raw)"));
    //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
    fileDialog->setFileMode(QFileDialog::ExistingFiles);//这个地方可以设置选择文件夹,我这里写的是选择文件,可以看源码
    //设置视图模式
    fileDialog->setViewMode(QFileDialog::Detail);
    //还有另一种形式QFileDialog::List,这个只是把文件的文件名以列表的形式显示出来
    // fileDialog->setGeometry(10,30,300,200);//设置文件对话框的显示位置

    if(fileDialog->exec() == QDialog::Accepted)
    {
        path = fileDialog->selectedFiles()[0];//得到用户选择的第一个文件名
        fileDialog->close();
        return path;
        }
    else
        return 0;
 }



void Widget::on_help_clicked()
{
     QMessageBox::warning(this,tr("hello"),tr("当前版本号:1.1版本"),QMessageBox::Yes);
}




widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include "myThread.h"

#include <QWidget>
#include <QPushButton>
#include "QMenuBar"
#include <QAction>
#include <QVBoxLayout>
#include <QFileDialog>
#include "QMessageBox"
#include "QTextEdit"
#include "QPalette"
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
     ~Widget();
    QString selectFilename();

 
private slots:
    void on_file_clicked();
    void on_help_clicked();
   
private:
    Ui::Widget *ui;
    QString path ;
 

};

#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>

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

    return a.exec();
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值