QtとC ++を使用して、配列のコンテンツの一部をリストウィジェット(アイテムベース)に表示したいのですが、これを試しましたが、うまくいきません:
QString exemple[2] = 'blablabla'
ui->listWidgetResult->addItem(exemple[2].toStdString().c_str());
ありがとう !
これは機能しません:
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()
。
これは、あなたが求めているものに対する簡単な解決策になるはずだと思います。
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();
}
}
}