2

QtとC ++を使用して、配列のコンテンツの一部をリストウィジェット(アイテムベース)に表示したいのですが、これを試しましたが、うまくいきません:

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

ありがとう !

4

2 に答える 2

6

これは機能しません:

QString example[2] = 'blablabla'

まず、文字列ではなく値'用です。char次に、2 つの QString の配列を宣言していますが、それを C 文字列に割り当てています。あなたが意味するのは、おそらくこれです:

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

実際には次のように省略できます。

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

配列の各文字列をリスト ウィジェットに追加するには、それぞれを個別に追加する必要があります。また、C 文字列に変換する必要はありません。QListWidget::addItem() は QString を取ります:

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

または、C++-11 をサポートする最新のコンパイラを使用している場合:

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

最後に、単純な配列を使用して QString を保持する代わりに、それらを QStringList に保持することを検討する必要があります。次に、を使用して QStringList 全体を単純に渡すことができますaddItems()

于 2012-11-13T19:41:12.300 に答える
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();
        }
    }
}
于 2016-08-29T18:47:10.127 に答える