Qt - QStringList 到 QListWidget*item

Posted

技术标签:

【中文标题】Qt - QStringList 到 QListWidget*item【英文标题】:Qt - QStringList to QListWidget*item 【发布时间】:2016-05-09 11:17:54 【问题描述】:

我在 QListWidget 中有一个来自 csv 文档的输入列表,我想将每个项目与一个 ID 相关联,因此当我双击特定项目时,我可以对其进行配置。我试过这个“QListWidgetItem *item = rowData;”,但它给了我一个错误。 构造函数中的代码:

 if (getin.open(QFile::ReadOnly)) 

    //Collect all data from the file
    items = getin.readAll();

    //Split all data line by line
     rowOfData = items.split("\n");

     //Close csv document
     getin.close();

 //Go through the data collected, and split them by two delimiters.
for (int x = 0; x < rowOfData.size(); x++)

    rowData = rowOfData.at(x).split(",").first().split(":");

    if(!rowData.isEmpty())
        ui->itemListWidget->addItem(rowData.first());
   QListWidgetItem *item = rowData;


当一个项目被双击时的功能:

void storage::on_itemListWidget_itemDoubleClicked(QListWidgetItem *item)

itemwindow = new itemWindow(this);
itemwindow->show();



【问题讨论】:

配置它是什么意思?更改值? 所以 QStringList 包含不同类型的数据,类别,名称和日期。我希望能够在另一个文件中进行配置。 你想用QListWidgetItem *item = rowData;实现什么? 查看双击了哪个项目,从而根据所选项目更改 QDialog。 【参考方案1】:

让我试着回答。这会报错:

QListWidgetItem *item = rowData;

因为 rowData 是 StringList 而不是 *QListWidgetitem。

如果您想获取完整的行数据,即 rowOfData。您可以使用以下插槽:

void storage::on_itemListWidget_itemDoubleClicked(QListWidgetItem *item)

    QString yourRowData = rowOfData.at(ui->itemListWidget->row(item));
    itemwindow = new itemWindow(this);
    itemwindow->show();

【讨论】:

以上是关于Qt - QStringList 到 QListWidget*item的主要内容,如果未能解决你的问题,请参考以下文章

Qt6STL-QStringList分析

QstringList 到 Qstring 的转换问题

Qt中的QString和QStringList常用方法

Qt中的QString和QStringList常用方法

使用 QlistW 减少 RAM 使用 [关闭]

QT 的自省如何使用