我正在学习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
框的内容。
由于
答案 0 :(得分:2)
当发出QFile
信号时,使用QTextStream
和QLineEdit::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
。
答案 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
信号。