4、QT的使用——QT文件操作和事件实现文件保存
目录
1、ui界面
2、mainwindow.h
3、新建文件的功能
(1)构造函数中:(信号与槽的连接)
(2)新建文件槽函数
4、打开某个文件
(1)添加头文件
(2)获取文件并且将信息显示在文本框中
5、将一个文件的数据读出来,并且将数据另存为另一个文件
二、事件
1、重写虚函数
2、键盘按下(ctr+s保存)
3、鼠标按下
一、文件操作
1、ui界面
(1)选择textEdit,然后选择垂直布局,保证文本框会随着框的大小变化而变化
(2)输入栏目名时,要写上”文件(&F)",就会显示”文件(F)“,才可通过快捷键打开菜单
(3)预览的快捷键:Alt+Shift+R
2、mainwindow.h
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void keyPressEvent(QKeyEvent *k);
void mousePressEvent(QMouseEvent *m);
private slots:
void newActionSlot();
void openActionSlot();
void saveActionSlot();
3、新建文件的功能
(1)构造函数中:(信号与槽的连接)
connect(ui->newAction, &QAction::triggered, this, &MainWindow::newActionSlot);
(2)新建文件槽函数
void MainWindow::newActionSlot()
{
ui->textEdit->clear();
this->setWindowTitle("新建文本文档.txt");
}
4、打开某个文件
(1)添加头文件
#include <QFileDialog>
(2)获取文件并且将信息显示在文本框中
void MainWindow::openActionSlot()
{
QString fileName = QFileDialog::getOpenFileName(this, "选择一个文件",
QCoreApplication::applicationFilePath(), "*.cpp");
if (fileName.isEmpty())
{
QMessageBox::warning(this, "警告", "请选择一个文件");
}
else
{
//qDebug() << fileName;
QFile file(fileName); //创建文件对象
file.open(QIODevice::ReadOnly);
QByteArray ba = file.readAll();
ui->textEdit->setText(QString(ba));
file.close();
}
}
当前路径下: QCoreApplication::applicationFilePath()
若要指定路径:”/home“
5、将一个文件的数据读出来,并且将数据另存为另一个文件
void MainWindow::saveActionSlot()
{
QString fileName = QFileDialog::getSaveFileName(this, "选择一个文件",
QCoreApplication::applicationFilePath());
if (fileName.isEmpty())
{
QMessageBox::warning(this, "警告", "请选择一个文件");
}
else
{
QFile file(fileName);
file.open(QIODevice::WriteOnly);//打开文件
//ui->textEdit->toPlainText();
QByteArray ba;
ba.append(ui->textEdit->toPlainText());//将数组读出来
file.write(ba);
file.close();
}
}
二、事件
1、重写虚函数
#include <QMessageBox>
#include <QDebug>
#include <QKeyEvent>
#include <QMouseEvent>
void keyPressEvent(QKeyEvent *k);
void mousePressEvent(QMouseEvent *m);
2、键盘按下(ctr+s保存)
void MainWindow::keyPressEvent(QKeyEvent *k)
{
if (k->modifiers() == Qt::ControlModifier && k->key() == Qt::Key_S)
{
saveActionSlot();
}
}
3、鼠标按下
void MainWindow::mousePressEvent(QMouseEvent *m)
{
QPoint pt = m->pos();//获取鼠标的位置
qDebug() << pt;//打印出鼠标的位置
if (m->button() == Qt::LeftButton)
{
qDebug() << "左键被按下";
}
else if (m->button() == Qt::RightButton)
{
qDebug() << "右键被按下";
}
}
好家伙VCC:![表情包](https://g.csdnimg.cn/static/face/emoji/003.png)
博主写的教程清楚,我写了一篇关于电机控制+STM32CubeMX开发+GPIO、ADC采集+PID电机控制+openmv手把手开发的教程欢迎大家一起交流:这是文章:https://blog.csdn.net/qq_46187594/article/details/138110155?spm=1001.2014.3001.5502
这个是视频:https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
Filove357: 感谢,看你的这篇解决了我很多问题,从你的注释中我受益匪浅
洒去犹能化碧涛: 输入捕获,怎么保证先保存CNT,然后再复位CNT这个顺序的
m0_68156527: 还好有你
用数据说话用数据决策: 果然优秀的博主才能写出这么优秀动人的博客,知识点详细清晰,干货满满