QstringList到Qstring的转换问题

时间:2016-04-21 15:51:16

标签: c++ visual-studio qt

我正在使用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中打印它们,并将它们(逐行)发送到其他系统。所以我尝试用以下内容来做。

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();
}

当我打印&#34;行&#34;时,它只是打印与文件中相同的值。当我进行转换和打印时,我收到一个错误(这是预期的)现在我尝试删除&#34;,&#34;在split的帮助下,我得到了QstringList,我无法使用,因为我有Qstring函数可以打印(这不能改变)

我没有从这里得到任何指示。请帮助我,因为这是困扰我很长一段时间。

2 个答案:

答案 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