2012-02-06 252 views
0

我是學生程序員,我正在使用Qt開發工作的GUI界面,並且我無法弄清楚如何讓這個導入功能起作用。如果你願意的話,一些程序員作家會阻止。到目前爲止,我有這個代碼:如何將CSV文件導入到QTableWidget

void InjectionLocationsDialogExpanded::importCSVFile() 
{ 
    QString fileName = QFileDialog::getOpenFileName(this, ("Open File"), "/home", ("csv File(*.csv)")); 
    QString data; 
    QFile importedCSV(fileName); 
    QStringList rowOfData; 
    QStringList rowData; 
    int tempint = 0; 
    data.clear(); 
    rowOfData.clear(); 
    rowData.clear(); 
    if (importedCSV.open(QFile::ReadOnly)) 
    { 
     data = importedCSV.readAll(); 
     rowOfData = data.split("\n"); 
     rowData = data.split(";"); 
     importedCSV.close(); 
    } 
    qDebug() << data; 
    for (int x = 0; x < rowOfData.size(); x++) 
    { 
     for (int y = 0; y < ui->tableWidgetInjectionLocationsExpandedDialog->columnCount(); y++) 
     { 
      ui->tableWidgetInjectionLocationsExpandedDialog->item(x,y)->setText(rowData[]); 
     } 
    } 
} 

這裏的問題是,我不知道如何獲得每個項目的setText在表中引用的rowData QStringList中的下一個項目。我需要增加一個位置,但我不能使用int ++,因爲它最終會在QStringList中查找不存在並導致分段錯誤的項目。由於目前的for循環結構,我也無法使用for循環來限制位置字段中我需要的數字。我只是想不出一個好的策略來解決這個問題。請僅留下建設性意見,因爲我只對學習或完成此任務感興趣。謝謝閱讀!

+0

對不起,失去你;我已經更新了這個句子,以表達我的意見,這是一個錯字。我不知道你的意思是我的rowOfData/rowData定義被混淆了。 rowOfData正用於查找有多少行數據,rowdata是行中數據的列表。至於你的循環方法,我相信我已經這樣做了?請詳細說明,如果你會... – 2012-02-06 18:45:49

+0

有趣的通常這樣的評論幫助過濾出這樣的評論。感謝您的幫助。 – 2012-02-06 18:52:14

回答

3

首先,你需要照顧行結束。 這意味着如果您只是在CSV文件中檢查「\ n」,那麼您的代碼可能不是平臺獨立的。

如果我得到你想要做的,你將不得不在循環中設置rowData。 那麼,我會怎麼做:

rowOfData.clear(); 
rowData.clear(); 

if (importedCSV.open(QFile::ReadOnly)) 
{ 
    data = importedCSV.readAll(); 
    rowOfData = data.split("\n"); 
    importedCSV.close(); 
} 

for (int x = 0; x < rowOfData.size(); x++) 
{ 
    rowData = rowOfData.at(x).split(";"); 
    for (int y = 0; y < rowData.size(); y++) 
    { 
     ui->tableWidgetInjectionLocationsExpandedDialog->item(x,y)->setText(rowData[y]); 
    } 
} 

我想這應該做到這一點。 此致敬禮。

+0

首先我想感謝你的幫助;我嘗試了這個,最初我收到了一個分段錯誤。原因是因爲columncount超越了它的界限。我將它換成rowData.size(),它工作完美!您應該爲未來的訪問者更新您的答案;謝謝您的幫助! – 2012-02-06 21:13:58

+1

很高興我能幫到你。我其實沒有檢查for-loop條件......編輯我的帖子。謝謝你的提示。 – guitarflow 2012-02-06 21:19:28