Qt:写入文件

时间:2017-08-03 08:11:26

标签: c++ qt

我正在学习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框的内容。

由于

3 个答案:

答案 0 :(得分: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 expressionQLineEdit::textChanged信号相关联。该lambda的text参数将是line的更改内容。 lambda中的代码块只是用收到的"output.txt"重写text

答案 1 :(得分: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。

答案 2 :(得分:0)

  

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

我可以将这些字词解释为当您的应用程序即将关闭时您可能想要保存QLineEdit内容,或者您​​希望保存它“即时”< / em>,当用户向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());
});

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

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