我建立一個QStringList中從一個文件:麻煩比較QTableWidgetItems到QStringList中的項目
QFile myTextFile("/home/user/Desktop/file.txt");
QStringList myStringList;
if (!myTextFile.open(QIODevice::ReadOnly))
{
QMessageBox::information(0, "Error opening file", myTextFile.errorString());
}
else
{
while(!myTextFile.atEnd())
{
myStringList.append(myTextFile.readLine());
}
myTextFile.close();
}
...創建QTableWidget的和填充,然後我想,以紀念第5行相匹配的項目之一,這些項目在myStringList中:
int rows = ui->tableWidget->rowCount();
for(int i = 0; i < rows; ++i)
{
QString str1 = ui->tableWidget->item(i, 5)->text();
if (myStringList->contains(str1))
//if(ui->tableWidget->item(i, 5)->text() == "targetstring")
{
ui->tableWidget->item(i, 5)->setBackgroundColor(Qt::blue);
}
}
這是編譯,但在執行時發生段錯誤。表存在並且在此處完全填充。如果我明確地傳遞了目標字符串(行註釋掉)它工作正常,但我需要檢查它對StringList。
任何建議表示讚賞,一直讓我瘋狂!
您是否爲每個項目調用了'QTableWidget :: setItem'? 'qDebug()<< ui-> tableWidget-> item(i,5)'輸出了什麼? – Amartel
是的,所有單元格都使用setItem設置。使用QTableWidgetItem創建的項目* abcItem = new QTableWidgetItem(QString :: fromStdString(abc.ToString())); .qDebug不工作,但QTextStream(標準輸出)<< ui-> tableWidget-> item(i,5);給了我很多十六進制亂碼。當我在消息彈出窗口中粘貼QString listitems = myStringList.join(「,」)時,文件內容可以正確顯示。 – user3891489
在你寫的'myStringList->'的最後一段代碼中。這是一個複製粘貼錯誤,或者是'myStringList'指針?它有效嗎? – Amartel