Qt保存QTextEdit内存至.txt文件中

本文介绍如何使用Qt实现文件保存功能,通过QFileDialog获取保存路径,并使用QFile将文本内容写入文件。同时,利用Qt::UniqueConnection避免按钮点击导致槽函数被触发两次,确保程序的正确执行。
摘要由CSDN通过智能技术生成

01. 保存按钮点击槽函数

//避免文件对话框弹出两次
//Qt::UniqueConnection确保同一信号与同一个槽函数之间只有一个连接,避免按钮点击后槽函数触发两次
connect(ui->buttonSave, SIGNAL(clicked()), this, SLOT(on_buttonSave_clicked()), Qt::UniqueConnection); 
void Widget::on_buttonSave_clicked()
{
    QFileDialog dlg(this);

    //获取内容的保存路径
    QString fileName = dlg.getSaveFileName(this, tr("Save As"), "./", tr("Text File(*.txt)"));

    if( fileName == "" )
    {
        return;
    }

    //内容保存到路径文件
    QFile file(fileName);

    //以文本方式打开
    if( file.open(QIODevice::WriteOnly | QIODevice::Text) )
    {
        QTextStream out(&file); //IO设备对象的地址对其进行初始化

        out << ui->textEditRead->toPlainText() << endl; //输出

        QMessageBox::warning(this, tr("Finish"), tr("Successfully save the file!"));

        file.close();
    }
    else
    {
        QMessageBox::warning(this, tr("Error"), tr("File to open file!"));
    }
}

02. 运行效果

在这里插入图片描述

03. 参考

[ 1 ] Qt 文本文件的打开、新建、保存以及另存为
[ 2 ] Qt发送一次信号触发两次槽函数的原因

根据提供的引用内容,没有直接提到Qt文本编辑器自动保存的相关信息。但是,我们可以通过编写代码实现Qt文本编辑器的自动保存功能。具体实现方法可以参考以下步骤: 1. 创建一个定时器,定时器的时间间隔可以根据需要自行设置。 2. 在定时器的槽函数,获取当前文本编辑器的文本内容,并将其保存到指定的文件。 3. 在文本编辑器的构造函数,读取指定的文件内容,并将其显示在文本编辑器。 下面是一个简单的示例代码,实现了Qt文本编辑器的自动保存功能: ``` #include <QTextEdit> #include <QTimer> #include <QFile> class AutoSaveTextEdit : public QTextEdit { Q_OBJECT public: AutoSaveTextEdit(const QString& fileName, QWidget* parent = nullptr) : QTextEdit(parent) , m_fileName(fileName) { // 读取文件内容 QFile file(m_fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { setText(file.readAll()); file.close(); } // 创建定时器 m_timer = new QTimer(this); connect(m_timer, &QTimer::timeout, this, &AutoSaveTextEdit::autoSave); m_timer->start(5000); // 每隔5秒自动保存一次 } private slots: void autoSave() { // 保存文件内容 QFile file(m_fileName); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { file.write(toPlainText().toUtf8()); file.close(); } } private: QString m_fileName; QTimer* m_timer; }; ``` 使用示例: ``` AutoSaveTextEdit* editor = new AutoSaveTextEdit("test.txt"); editor->show(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值