QstringList 到 Qstring 的转换问题

Posted

技术标签:

【中文标题】QstringList 到 Qstring 的转换问题【英文标题】:QstringList to Qstring conversion issues 【发布时间】:2016-04-21 15:51:15 【问题描述】:

我正在使用 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 \n

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

当我打印“行”时,它只是打印与文件中相同的值。当我进行转换和打印时,我得到一个错误(这是预期的)现在我尝试在 split 的帮助下删除“,”然后我得到 QstringList 我不能使用它,因为我有 Qstring 函数来打印(这不能改变)

我没有从这里得到任何指示。请帮帮我,因为这一直困扰着我。

【问题讨论】:

迭代字符串列表并打印其中的每个字符串 【参考方案1】:

很简单……

QStringList::const_iterator constIterator;

for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
           ++constIterator) 

        cout << (*constIterator).toLocal8Bit().constData() << endl;

fonts 是你的 QStringlist

【讨论】:

更简单:for (const auto&amp; font : fonts) cout &lt;&lt; font.toLocal8Bit().constData() &lt;&lt; endl; 【参考方案2】:

您的问题简化为“我如何迭代 QStringList”。

像这样:

// C++11
for (auto field : fields) Print_messageBox(field);
// C++98
foreach (QString field, fields) Print_messageBox(field);

请参阅 here,了解有关如何实施 foreach 又名 Q_FOREACH 的信息。

【讨论】:

以上是关于QstringList 到 Qstring 的转换问题的主要内容,如果未能解决你的问题,请参考以下文章

Qt中的QString和QStringList常用方法

QString和QByteArray的用法

Qt中的QString和QStringList常用方法

QT QString

求教QStringList 拆分为 多个 QStringList

在 C++ 中使用 QStringList 构建 QHash