gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:43:06 24 4
gpt4 key购买 nike

我创建了一个按钮,单击它时应该通过串行发送命令列表以完成按钮的操作。我在我的 mainwindow.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);
}
}

关于c++ - 删除所有字符串后如何恢复 QStringList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com