2016-04-21 78 views
0

我正在用Qt框架在VS2015上工作。在我的源代碼中,我有一個在GUI屏幕上打印的功能。 每次需要打印時都會調用此函數。 它是這樣的。QstringList到Qstring轉換問題

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

當我打印「行」時,它只是打印與文件中相同的值。當我做轉換和打印時,我得到一個錯誤(這是預期的)現在我嘗試刪除「,」與拆分的幫助,然後我得到QstringList,我不能使用,因爲我有Qstring函數打印(這不能改變)

我沒有從這裏得到任何指針。請幫助我,因爲這很長時間以來一直困擾着我。

+0

迭代字符串列表打印每個字符串中的字符串 – dtech

回答

0

只是簡單的...

QStringList::const_iterator constIterator; 

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

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

,其中的字體是你QStringList中

+2

簡單:'for(const auto&font:fonts){cout << font.toLocal8Bit()。constData()<< endl; }' –

0

你的問題簡化爲 「我怎麼遍歷一個QStringList」。

像這樣:

// 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