当前位置:网站首页>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()<<"右键被按下";
}
}
三、成果展示
边栏推荐
猜你喜欢
随机推荐
删除排序数组中的重复项(Leetcode26)
MySQL 5.5(Windows)的安装教程
wps表格分两页断开怎么办?wps表格分两页断开的解决方法
三国战绩物品序号.txt
支付宝 To 理财排行名称修改
MES对接Simba实现展讯平台 IMEI 写号与耦合测试
同花顺的炒股软件买股票安全正规可信吗?
【Verilog基础】PPA优化问题总结(含面积优化、速度优化)
微信小程序项目--订单
有了国产 DevOps 工具 ,还怕数字化转型成本高?
Alipay To Financial Ranking Name Modification
人人熟知的IPV6竟然还有这么多细节
防火墙初接触
DHCP's defense mechanism - DHCP Snooping (DHCP snooping)
Xcode 创建一个Dylib 插件deb项目
Free ARP
Kubernetes资源编排系列之四: CRD+Operator篇
wps表格怎么筛选出需要的内容?wps表格筛选出需要的内容的方法
sess.restore() 和 tf.import_meta_graph() 在使用时的一些关联
wsgw login packet capture record