我正在学习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
框的内容。
谢谢
当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
。
您可以使用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。
我想知道如何将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());
});
根据您的需要,使用其中一种connect
s就足够了。
注意:当您的应用程序关闭时,通过按标准窗口“关闭”按钮或按下自定义“退出”按钮,会发出qazxsw poi信号。