删除所有字符串后如何恢复 QStringList?
How do I recover the QStringList after all strings are removed?
>我创建了一个按钮,单击它时应通过串行发送命令列表以完成按钮的操作。我在主窗口.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);
}
}
相关文章:
- 使用QProcess执行命令,并将结果存储在QStringList中
- 用C++将哈希表写入文件并从文件中恢复
- Qt:当QListView获得新条目时,如何更新QStringList
- Opencv 恢复到比我设置的更高的分辨率
- 变量在使用赋值语句赋值后恢复为以前的值
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 删除所有字符串后如何恢复 QStringList?
- 当对套接字 send() 的同步调用由于连接另一端丢失而被阻止时,如何恢复?
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- "co_yield"是否可以在恢复协程时从调用方返回值?
- OpenSSL C API:如何在程序exec()之后恢复TLS连接?
- 通过指针恢复对数组的引用.UB与否?
- 从不同进程中的另一个线程挂起/恢复线程或进程
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 如何在 XML 中正确存储原始字节数据并恢复它?
- ExtTextOut 文本的持续闪烁,在一段时间后,文本将恢复为默认字体
- 模板化类中运算符 + 重载的值的恢复
- C++ 线程创建/删除与线程停止/恢复
- ZMQ::send() 抛出异常并终止 QNX 进程.为什么以及如何从中恢复?