在List Widget Qt C ++中显示数组内容

时间:2012-11-13 19:34:24

标签: c++ arrays qt qstring

我想用Qt和C ++在List Widget(基于项目)中显示我的数组的一些内容,我尝试了这个,但它起作用了:

QString exemple[2] = 'blablabla'
ui->listWidgetResult->addItem(exemple[2].toStdString().c_str());

谢谢!

2 个答案:

答案 0 :(得分:5)

这不起作用:

QString example[2] = 'blablabla'

首先,'用于char值,而不是字符串。其次,您声明了两个QStrings的数组,但将其分配给C字符串。你的意思是这个:

QString example[2] = {"blabla", "blabla"};

您实际上可以缩写为:

QString example[] = {"blabla", "blabla"};

要将数组的每个字符串添加到列表小部件,您需要单独添加每个字符串。此外,无需转换为C字符串。 QListWidget :: addItem()接受QStrings:

for (int i = 0; i < sizeof(example); ++i) {
    ui->listWidgetResult->addItem(exemple[i]);
}

或者,如果你有一个支持C ++的最新编译器 - 11:

for (const auto& str : example) {
    ui->listWidgetResult->addItem(str);
}

最后,您应该考虑将它们保存在QStringList中,而不是使用普通数组来保存QStrings。然后,您可以使用addItems()简单地传递整个QStringList。

答案 1 :(得分:0)

我认为这应该是您要求的简单解决方案。

void MyClass::Set_List(QList<QString> filesList, int item_count)
{
    QVector<QString> load_set(item_count);
    for(int i = 0; i < item_count; i++)
    {
        load_set[i] = filesList[i];
        ui -> listWidget -> addItem(load_set[i]);
    }
}

然后将信息退出......

void MyClass::Selection(QListWidgestItem * item)
{
    for(int i = 0; i < item_count; i++)
    {
        if(ui -> listWidget -> item(i) == item)
        {
            str = ui -> listWidget -> item(i) -> text();
        }
    }
}