я хочу отобразить часть содержимого моего массива в виджете списка (на основе элементов) с помощью Qt и C ++, я пробовал это, но это не работает:
QString exemple[2] = 'blablabla'
ui->listWidgetResult->addItem(exemple[2].toStdString().c_str());
Спасибо !
Это не может работать:
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);
}
Наконец, вместо использования простых массивов для хранения ваших QStrings, вы должны вместо этого рассмотреть возможность их хранения в 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();
}
}
}