我正在使用qt框架在VS2015上工作。在我的源代码中,我有一个在GUI屏幕上打印的功能。 每次需要打印时都会调用此函数。 它是这样的。
void Trial::Print_MessageBox(QString string)
{
ui.MessagesScreen->appendPlainText(string);
Cursor_Messagebox.movePosition(QTextCursor::End);
ui.MessagesScreen->setTextCursor(Cursor_Messagebox);
ui.MessagesScreen->ensureCursorVisible();
}
// Output in MessageBox
void Trial::Print_MessageBox(QFlags<QNetworkInterface::InterfaceFlag> flags)
{
QString str = QString("Flag %1").arg(flags);
ui.MessagesScreen->appendPlainText(str);
}
上述功能没有问题,运行良好。
现在我正在尝试阅读文本文件。这是一组没有顺序或大小的值。一个例子:
231,54,4 47777,2211,676,9790,34236,7898 \ n 1,3 \ n 目标是将这些转换为整数(逐行)并在GUI中打印它们,并将它们(逐行)发送到其他系统。所以我尝试用以下内容来做。 当我打印&#34;行&#34;时,它只是打印与文件中相同的值。当我进行转换和打印时,我收到一个错误(这是预期的)现在我尝试删除&#34;,&#34;在split的帮助下,我得到了QstringList,我无法使用,因为我有Qstring函数可以打印(这不能改变) 我没有从这里得到任何指示。请帮助我,因为这是困扰我很长一段时间。 void Trial::ReadFile_Data()
{
QFile file("input.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
Print_MessageBox("Error in reading File");
return;
}
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine();
Print_MessageBox(line);
int conv = line.toInt();
QString str = QString("%1 %2").arg("Values are: ").arg(conv);
Print_MessageBox(str);
QStringList fields = line.split(",");
}
file.close();
}
答案 0 :(得分:0)
简单......
QStringList::const_iterator constIterator;
for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
++constIterator) {
cout << (*constIterator).toLocal8Bit().constData() << endl;
}
其中fonts是你的QStringlist
答案 1 :(得分:0)
您的问题缩减为&#34;如何迭代QStringList
&#34;。
像这样:
// C++11
for (auto field : fields) Print_messageBox(field);
// C++98
foreach (QString field, fields) Print_messageBox(field);
有关foreach
a.k.a Q_FOREACH
的实施方式的信息,请参阅here。