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() << "右键被按下";
    }
}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!你可以使用PyQt6库来创建一个简单的GUI应用程序,其中包括一个按钮和一个文本框。当点击按钮时,你可以选择一个文件,并将文件路径显示在文本框中。下面是一个示例代码: ```python import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit, QFileDialog class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("文件选择示例") self.button = QPushButton("选择文件", self) self.button.clicked.connect(self.select_file) self.button.setGeometry(50, 50, 100, 30) self.textbox = QLineEdit(self) self.textbox.setGeometry(50, 100, 200, 30) def select_file(self): file_dialog = QFileDialog() file_path = file_dialog.getOpenFileName(self, "选择文件")[0] if file_path: self.textbox.setText(file_path) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec()) ``` 在这个例子中,我们创建了一个继承自QMainWindow的主窗口类MainWindow。在构造函数中,我们设置了窗口的标题,并创建了一个按钮和一个文本框。我们将按钮的clicked信号连接到了select_file方法,这样当按钮被点击时,该方法就会被调用。在select_file方法中,我们使用QFileDialog来选择文件,并将文件路径设置到文本框中。 你可以使用PyQt6来运行这个示例,并尝试点击按钮来选择文件并查看文件路径是否正确显示在文本框中。希望这对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值