【Qt:实现打开文件并展示在文本编辑器中】

Qt:实现打开文件并展示在文本编辑器中

  • 1 在Qt中新建一个空项目
  • 2 添加一个主窗口类
  • 3 添加Main.cpp文件
  • 4 在项目目录创建图标目标录
  • 5 添加资文件,为快捷键添加图标
  • 6 设计主窗口界面
  • 7 打开mainwindow.h文件,设置信号和槽功能:
  • 8 设置文件拖放到主窗口打开功能

1 在Qt中新建一个空项目

1)Ctrl+N新建空项目
【Qt:实现打开文件并展示在文本编辑器中】_第1张图片
【Qt:实现打开文件并展示在文本编辑器中】_第2张图片
【Qt:实现打开文件并展示在文本编辑器中】_第3张图片
【Qt:实现打开文件并展示在文本编辑器中】_第4张图片
2),双击.pro文件,添加下面的代码:

QT += widgets//引用了widget窗口类
RC_ICONS = heart.ico//创建了应用程序图标

3)制作一个应用程序图标,可以在阿里矢量库搜索下载:https://www.iconfont.cn/,存放在项目文件中。

【Qt:实现打开文件并展示在文本编辑器中】_第5张图片
【Qt:实现打开文件并展示在文本编辑器中】_第6张图片

2 添加一个主窗口类

1)选择项目,右击添加新文件,add new …–>C+±->C++ -->Class–>Choose。
【Qt:实现打开文件并展示在文本编辑器中】_第7张图片
【Qt:实现打开文件并展示在文本编辑器中】_第8张图片
【Qt:实现打开文件并展示在文本编辑器中】_第9张图片

【Qt:实现打开文件并展示在文本编辑器中】_第10张图片

3 添加Main.cpp文件

1)选择项目,右击添加新文件,add new …–>C+±->C++ Source Flie–>Choose

【Qt:实现打开文件并展示在文本编辑器中】_第11张图片
【Qt:实现打开文件并展示在文本编辑器中】_第12张图片
【Qt:实现打开文件并展示在文本编辑器中】_第13张图片
【Qt:实现打开文件并展示在文本编辑器中】_第14张图片
2)添加必要的代码
【Qt:实现打开文件并展示在文本编辑器中】_第15张图片

4 在项目目录创建图标目标录

【Qt:实现打开文件并展示在文本编辑器中】_第16张图片
可以在阿里矢量库搜索下载:https://www.iconfont.cn/
【Qt:实现打开文件并展示在文本编辑器中】_第17张图片

5 添加资文件,为快捷键添加图标

1)回到文件栏目,右击项目添加新文件,选择Qt–Qt Resource File,确定。
【Qt:实现打开文件并展示在文本编辑器中】_第18张图片
【Qt:实现打开文件并展示在文本编辑器中】_第19张图片
【Qt:实现打开文件并展示在文本编辑器中】_第20张图片
【Qt:实现打开文件并展示在文本编辑器中】_第21张图片
2)回到项目中,打开资源文件.qrc,添加前缀,也可删去,再点击添加文件,全选,打开,确定。完成后Ctrl+S保存该文档。【Qt:实现打开文件并展示在文本编辑器中】_第22张图片
【Qt:实现打开文件并展示在文本编辑器中】_第23张图片
【Qt:实现打开文件并展示在文本编辑器中】_第24张图片

6 设计主窗口界面

1)打开mainwindow.h文件,输入下面的代码,定义菜单、工具、文本编辑器:
【Qt:实现打开文件并展示在文本编辑器中】_第25张图片
2)打开mainwindow.cpp文件,构造变量:
输入下面的代码
【Qt:实现打开文件并展示在文本编辑器中】_第26张图片

7 打开mainwindow.h文件,设置信号和槽功能:

输入:

public slots:
	void opneFile();

<1>选中openFile点击右键,重构refactor->在mainwindow.cpp中添加定义,回车,或者Alt+Enter->在mainwindow.cpp中添加定义,回车。

【Qt:实现打开文件并展示在文本编辑器中】_第27张图片

<2>在mainwindow.cpp中,添加头文件:

#include 
#include 
#include 
#include 

<3>同文件内,设计openFile的槽函数:

void mainwindow::openFile() //打开文件的槽函数
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                    "/app", tr("Text Files (*.*)"));    //打开*.*所有类型的文本文件
    qDebug() << fileName;   //获取文件路径

    if (!fileName.isEmpty()){
        QFile file(fileName);   //不为空,创建文件对象
        if (!file.open(QFile::ReadOnly | QFile::Text)){
            QMessageBox::warning(this, tr("Warning!!!"), tr("can't read file %1: \n %2.")
                                             .arg(fileName).arg(file.errorString()));   //无法读取文件提示
        }else {
            QTextStream in(&file);  //打开成功,创建文本流
            textEdit->setText(in.readAll());    //读取所有文件内容到in,并显示在文本编辑器中
            setWindowTitle(fileName);   //设置标题为文件名
        }
    }
}

<3>同文件内,mianwindow主程序中,关联openFile信号和槽函数

//关联openFile信号和槽
    connect(action_O, &QAction::triggered, this, &mainwindow::openFile);    //动作、触发、当前主窗口,槽函数

<4>Ctrl+R,运行效果如下:

【Qt:实现打开文件并展示在文本编辑器中】_第28张图片
【Qt:实现打开文件并展示在文本编辑器中】_第29张图片

<5>同文件内,mianwindow主程序中,关联close信号和槽函数

//关联退出动作信号和槽
    connect(action_Q, &QAction::triggered, this, &mainwindow::close);

8 设置文件拖放到主窗口打开功能

动作分别为拖入、放下
1)在mainwindow.h中申明这两个函数:

protected :
	void dragEnterEvent(QDragEnterEvent *event);
	void jdropEvent(QDropEvent *event);
  1. Alt+Enter,选择在mianwindow.cpp中添加定义
    添加头文件:
#include 
#include 
#include 
#include 

3)在mianwindow.cpp中添加拖放事件的定义

void mainwindow::dragEnterEvent(QDragEnterEvent *event) //拖入事件
{
    if (event->mimeData()->hasUrls())  //检查拖放是否存在路径
        event->accept();
    else{
        event->ignore();
    }
}

void mainwindow::jdropEvent(QDropEvent *event)  //放下事件
{
    const QMimeData *mimeData = event->mimeData();  //获取事件内容
    if(mimeData->hasUrls()) {
        QList<QUrl> urlList = mimeData->urls();
        QString fileName = urlList.at(0).toLocalFile(); //读取第一个地址

        if (!fileName.isEmpty()) {  //打开文件
            QFile file(fileName);
            if(!file.open(QFile::ReadOnly | QFile::Text)) {
                QMessageBox::warning(this, tr("Warning!!!"), tr("can't read file %1: \n %2.")
                                     .arg(fileName).arg(file.errorString()));
            } else {
                QTextStream in(&file);
                textEdit->setText(in.readAll());
                setWindowTitle(fileName);
            }
        }
    }
}

4)在mainwindow.cpp的主程序中,添加允许放下:

	//接收放下操作
    setAcceptDrops(true);

5)Ctrl+R,运行效果如下:
注意,拖放只针对主窗口,如果拖到文本编辑器范围,是不会打开文件的
【Qt:实现打开文件并展示在文本编辑器中】_第30张图片

你可能感兴趣的:(QT编程基础,qt,数据库,java)