此示例只是一个简单的文件的打开,读取,文件内容的加载,望共勉。
界面效果展示
代码实现
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void on_pushButton_clicked();
void on_lineEdit_textChanged(const QString &arg1);
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
#include <QFileDialog>
#include <QFile>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
// ui->lineEdit->clear();//先清空文件路径,起初的目的是防止多次使用选择文件路径时路径追加,后发现没有必要,每次路径都是重新覆盖上一次的路径
QString strPath = QDir::currentPath();
QString strFileFliter = tr("源文件(*.h *.cpp)");
QString strFilePath = QFileDialog::getOpenFileName(this,tr("选择文件"),strPath,strFileFliter);
if(strFilePath.isEmpty())
{
qDebug()<<tr("%1文件路径为空").arg(strFilePath)<<endl;
return ;
}
ui->lineEdit->setText(strFilePath);
}
void Dialog::on_lineEdit_textChanged(const QString &arg1)
{
QFile file(arg1);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug()<<tr("%1文件打开失败").arg(arg1)<<endl;
return ;
}
QTextStream in(&file);
QString strContent = in.readAll();
ui->plainTextEdit->setPlainText(strContent);//appendPlainText(strContent)此函数会在原有文本的基础上追加,而setPlainText()则直接覆盖,显示当前文本
file.close();
}
mian.cpp
#include "dialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
return a.exec();
}
运行效果
此实例比较简单,只用了两个槽函数来实现具体功能,特此记录,不积硅步,无以成江河。