QFileDialog::getOpenFileName
QMessageBox
QFile
keyPressEvent
实现简单的打开、新建、保存文件的界面小程序
QFileDialog::getOpenFileName
QFileDialog::getOpenFileName用来选择一个本地文件,用法如下,第二个参数表示窗口名称,第三个参数表示获取当前程序的地址,也可以更改为其他地址,第四个参数为过滤文件类型,当前表示只显示所有的.cpp文件
QString fileName = QFileDialog::getOpenFileName(this, tr("选择一个文件打开"),QCoreApplication::applicationFilePath(),"*.cpp");
if(fileName.isEmpty()){
QMessageBox::warning(this,"警告","请选择一个文件");
}
QMessageBox
QMessageBox常被用做弹窗提示用户,例如:
QMessageBox::warning(this,"警告","请选择一个文件");
效果图如下
还有一些别的静态成员函数,如图
具体用法可参考Qt接口文档
QFile
QFile主要用来操作文件,用法如下
QFile file(fileName);//文件路径名
file.open(QIODevice::ReadOnly);//文件操作方式
QByteArray baData = file.readAll();//读取文件全部内容
ui->textEdit->setText(QString(baData));//显示
file.close();
keyPressEvent
对于Qt来说,键盘的按下/弹起、鼠标左右键点击、滚轮滑动等等都可以称为事件(或是信号),可以监听触发,keyPressEvent就是键盘事件,可以在继承了QObject后重写void keyPressEvent(QKeyEvent *e)函数,实现想要的功能。
qt开发文档中有对应键盘事件的属性,如下图
实现简单的打开、新建、保存文件的界面小程序
界面布局如下图,采用mainWindow窗口,垂直布局,左上方三个按钮,文件下有打开、新建、保存三个选项
附上代码
.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileDialog>
#include "QMessageBox"
#include <QDebug>
#include <QFile>
#include <QKeyEvent>
#include <QByteArray>
using namespace std;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("信号检测");
connect(ui->newFile,&QAction::triggered,this,&MainWindow::newActionSlot);
connect(ui->openFile,&QAction::triggered,this,&MainWindow::openActionSlot);
connect(ui->saveFile,&QAction::triggered,this,&MainWindow::saveActionSlot);
}
MainWindow::~MainWindow()
{
delete ui;
}
//鼠标事件处理
void MainWindow::keyPressEvent(QKeyEvent *e)
{
if(e->modifiers() == Qt::ControlModifier && e->key() == Qt::Key_S){
saveActionSlot();
}
}
//新建
void MainWindow::newActionSlot()
{
ui->textEdit->clear();
this->setWindowTitle("新建文本文档");
}
//打开
void MainWindow::openActionSlot()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("选择一个文件打开"),QCoreApplication::applicationFilePath(),"*.cpp");
if(fileName.isEmpty()){
QMessageBox::warning(this,"警告","请选择一个文件");
}else{
qDebug()<<fileName;
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QByteArray baData = file.readAll();
ui->textEdit->setText(QString(baData));
file.close();
}
}
//保存
void MainWindow::saveActionSlot()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("选择一个文件打开"),QCoreApplication::applicationFilePath(),"*.cpp");
if(fileName.isEmpty()){
QMessageBox::warning(this,"警告","请选择一个文件");
}else{
QFile file(fileName);
file.open(QIODevice::WriteOnly);
QByteArray baData;
baData.append(ui->textEdit->toPlainText().toLatin1());
file.write(baData);
file.close();
}
}