删除所有字符串后如何恢复 QStringList?

How do I recover the QStringList after all strings are removed?

本文关键字:恢复 QStringList 何恢复 字符串 删除      更新时间:2023-10-16

>我创建了一个按钮,单击它时应通过串行发送命令列表以完成按钮的操作。我在主窗口.h文件中定义了字符串列表,如下所示:

QStringList database_dump = 
{
"STRING1",
"STRING2",
"STRING3",
"STRING4",
"STRING5",
"STRING6",
"STRING7"
};

从我的按钮点击信号中,我想提取每个字符串并将其发送到我的write_to_port函数,如下所示:

void MainWindow::on_dump_database_clicked()
{
QString * file_name;
QByteArray key_value;
while(!database_dump.isEmpty())
{
file_name = new QString(database_dump.takeFirst());
key_value = file_name->toLatin1();
key_value.append(NEW_LINE_CR);
write_to_port(key_value);
}
}

在每个字符串之后,需要一个模拟的回车键,如图所示。

问题是:takefirst()方法获取字符串并将其从列表中删除。第一个周期按下按钮效果很好。然而,第二次它什么都不做,因为QStringList是空的。

如何在每次单击按钮后重置字符串列表?

使用foreach或范围for而不是while来迭代字符串列表的元素,即:

void MainWindow::on_dump_database_clicked()
{
foreach (const QString &file_name, database_dump) {
QByteArray key_value(file_name->toLatin1());
key_value.append(NEW_LINE_CR);
write_to_port(key_value);
}
}

void MainWindow::on_dump_database_clicked()
{
for (const QString &file_name: database_dump) {
QByteArray key_value(file_name->toLatin1());
key_value.append(NEW_LINE_CR);
write_to_port(key_value);
}
}