qt如何在关闭yemian的时候,把里面的6个lineedit的内容,写入到txt文件中,并保存
时间: 2024-09-26 17:07:40 浏览: 28
在Qt中,当你想要在窗口关闭时将QLineEdit的内容保存到文本文件中,你可以使用信号槽(signal-slot)机制以及文件I/O操作。以下是一个简单的示例,展示了如何在MainWindow的`closeEvent`信号被触发时,将六个QLineEdit的内容保存到一个TXT文件:
```cpp
#include <QMainWindow>
#include <QFileDialog>
#include <QCloseEvent>
#include <QVector>
#include <QStringList>
class QLineEditContainer : public QWidget {
public:
QLineEditContainer(QWidget* parent = nullptr) : QWidget(parent) {
for (int i = 0; i < 6; ++i) {
QLineEdit* lineEdit = new QLineEdit(this);
// 添加到布局中,这里假设使用了QVBoxLayout
QVBoxLayout* layout = new QVBoxLayout();
layout->addWidget(lineEdit);
setLayout(layout);
lineEdits.append(lineEdit);
}
}
private:
QVector<QLineEdit*> lineEdits;
};
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
centralWidget = new QLineEditContainer;
setCentralWidget(centralWidget);
}
~MainWindow() override {
delete ui;
}
protected:
void closeEvent(QCloseEvent *event) override {
event->accept();
QStringList lines;
for (QLineEdit* lineEdit : centralWidget->lineEdits) {
lines.append(lineEdit->text());
}
QString filename = QFileDialog::getSaveFileName(
this, tr("Save Text"), "", tr("Text Files (*.txt)")
);
if (!filename.isEmpty()) {
QFile file(filename);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << lines.join("\n"); // 将行列表连接成字符串并写入文件
file.close();
} else {
qDebug() << "Failed to open file for writing";
}
}
}
private:
Ui::MainWindow *ui;
QLineEditContainer *centralWidget;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
```
在这个例子中,我们首先定义了一个包含6个QLineEdit的小部件`QLineEditContainer`。然后,在`MainWindow`的`closeEvent`处理函数中,我们获取每个QLineEdit的内容,用`QFileDialog`让用户选择一个保存位置,然后将这些内容写入文件。
阅读全文