Qt:写入文件

问题描述 投票:1回答:3

我正在学习QT是如何工作的。我有这个小代码:

QApplication app(argc, argv);
QWidget fenetre;
fenetre.setFixedWidth(400);
fenetre.setFixedHeight(400);

QPushButton *bouton = new QPushButton("Quit", &fenetre);
bouton->setFixedHeight(50);
bouton->setFixedWidth(100);
bouton->move(170,310);


QLabel *label = new QLabel("Something", &fenetre);
label->move(30,200);
QLineEdit *line = new QLineEdit(&fenetre);
line->move(200,200);

QWidget::connect(bouton, SIGNAL(clicked()),qApp, SLOT(quit()));

fenetre.show();

我想知道如何将QLineEdit标签的内容连续放入文件(.txt)中。目标是在程序完成时保留用户在文本文件中放入QLineEdit框的内容。

谢谢

c++ qt
3个回答
2
投票

QFile信号发出时,使用QTextStreamQLineEdit::textChanged写入文件,如下所示:

QObject::connect(line, &QLineEdit::textChanged, [](const QString& text) {
    QFile file("output.txt");

    if(file.open(QFile::WriteOnly | QFile::Text)) {
        QTextStream stream(&file);
        stream << text;
        file.close();
    }
});

上面的代码将lambda expression连接到QLineEdit::textChanged信号。该lambda的text论证将是你的line的改变内容。 lambda中的代码块只是用接收到的"output.txt"重写text


0
投票

您可以使用QFile以文本文本/二进制格式读/写数据。

按按钮保存数据:

void MainWindow::on_btnSaveData_clicked()
{
    writeDataInFile(ui->lineEdit->text());
}

功能保存数据:

void MainWindow::writeDataInFile(QString data)
{
    QString filePath = "D:/Your Path";
    QFile writeFile(filePath);
    if(!writeFile.open(QFile::Append | QFile::Text))
    {
        // Can't Open File.
    }
    else
    {
        if(data.length() > 0)
        {
            QTextStream in(&writeFile);
            in << data << "\r";
        }
    }
    writeFile.close();
}

此函数获取QString,打开文件(filePath)并在文件末尾附加数据。

您可以修改函数并将QByteArray发送到函数或Vector。


0
投票

我想知道如何将QLineEdit标签的内容连续放入文件(.txt)中。目标是在程序完成时保留用户在文本文件中放入QLineEdit框的内容。

我可以将这些单词解释为您可能希望在应用程序即将关闭时保存QLineEdit内容,或者您​​想“快速”保存它,当用户向QLineEdit键入内容时会立即将其保存。在这两种情况下,您可以使用一些save()函数,如下所示:

void save(const QString &text)
{
    QFile f("out.txt");
    bool ok = f.open(QIODevice::WriteOnly);

    if(!ok) {
        qDebug() << "open file error!";
        return;
    }

    QTextStream stream(&f);
    stream << text;
    f.close();
}

然后在你的connect中应用其中一个main函数:

// save on type
QObject::connect(line, &QLineEdit::textChanged, [line](const QString &text) {
    save(text);
});

// save on application close.
QObject::connect(&app, &QApplication::aboutToQuit, [line]() {
    save(line->text());
});

根据您的需要,使用其中一种connects就足够了。

注意:当您的应用程序关闭时,通过按标准窗口“关闭”按钮或按下自定义“退出”按钮,会发出qazxsw poi信号。

© www.soinside.com 2019 - 2024. All rights reserved.