当前位置:网站首页>Qt入门(五)——文件操作、热键和鼠标的读取(txt窗口的实现)
Qt入门(五)——文件操作、热键和鼠标的读取(txt窗口的实现)
2022-08-08 23:05:00 【光追雨】

注意,是选这个MainWindow
一、ui设计
1.1 图像成果

1.2 类名定义

二、代码展示
2.1 MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
#include <QKeyEvent>
#include <QMouseEvent>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
void keyPressEvent(QKeyEvent *k);
void mousePressEvent(QMouseEvent *m);
~MainWindow();
private slots:
void NewActionSlots();
void OpenActionSlots();
void SaveActionSlots();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
2.2 main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
2.3 MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->Newaction,&QAction::triggered,this,&MainWindow::NewActionSlots);
connect(ui->Openaction,&QAction::triggered,this,&MainWindow::OpenActionSlots);
connect(ui->Saveaction,&QAction::triggered,this,&MainWindow::SaveActionSlots);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::NewActionSlots()
{
ui->textEdit->clear();
this->setWindowTitle("新建文本文档.txt");
}
void MainWindow::OpenActionSlots()
{
QString filename = QFileDialog::getOpenFileName(this,tr("请选择一个文件"),
QCoreApplication::applicationFilePath(),
"*.cpp");
if(filename.isEmpty())
{
QMessageBox::warning(this,"警告","请选择一个文件");
}
else {
QFile file(filename);
file.open(QIODevice::ReadOnly);
QByteArray ba = file.readAll();
ui->textEdit->setText(QString(ba));
file.close();
}
}
void MainWindow::SaveActionSlots()
{
QString filename = QFileDialog::getSaveFileName(this,tr("请选择一个文件"),
QCoreApplication::applicationFilePath());
if(filename.isEmpty())
{
QMessageBox::warning(this,"警告","请选择一个文件");
}
else {
QFile file(filename);
file.open(QIODevice::WriteOnly);
QByteArray ba;
ba.append(ui->textEdit->toPlainText());
file.write(ba);
file.close();
}
}
void MainWindow::keyPressEvent(QKeyEvent *k)
{
if(k->modifiers() == Qt::ControlModifier && k->key() == Qt::Key_S)
{
SaveActionSlots();
}
if(k->modifiers() == Qt::ControlModifier && k->key() == Qt::Key_C)
{
NewActionSlots();
}
if(k->modifiers() == Qt::ControlModifier && k->key() == Qt::Key_O)
{
OpenActionSlots();
}
}
void MainWindow::mousePressEvent(QMouseEvent *m)
{
QPoint pt = m->pos();
qDebug()<<pt;
if(m->button() == Qt::LeftButton)
{
qDebug()<<"左键被按下";
}
else if(m->button() == Qt::RightButton)
{
qDebug()<<"右键被按下";
}
}
三、成果展示

边栏推荐
猜你喜欢
随机推荐
sess.restore() 和 tf.import_meta_graph() 在使用时的一些关联
ArcPy设置全库唯一标识码
ALIPAY WEB log in rsa encryption analysis record
JSDay1-两数之和
win10电脑安装Photoshop cs7软件版本
请问:支付宝上买基金安全吗
php7.4安装ssh2扩展和使用ssh链接sftp上传下载文件
数组去重的几种方法
MySQL给表里的某个字段建立索引
Low-Light Image Enhancement via a Deep Hybrid Network阅读札记
Kubernetes 资源编排系列之二: Helm 篇
ZCANPRO 通道配置方法
meta learning
发送封包的函数都有哪些?OD如何下断?
动手写prometheus的exporter-01-Gauge(仪表盘)
Mysql8.0.21 Community Server远程连接报错
JSDay2-多个数组的交集
JS中数组扁平化的几种方法
【Verilog基础】PPA优化问题总结(含面积优化、速度优化)
Roson的Qt之旅#107 QML ListView
![微信小程序错误 undefined Expecting ‘STRING‘,‘NUMBER‘,‘NULL‘,‘TRUE‘,‘FALSE‘,‘{‘,‘[‘, got ]解决方案](/img/31/a9b0c31f648d41e300949ac43c5cab.png)








