Отображение содержимого массива в виджете списка Переполнение стека Qt

я хочу отобразить часть содержимого моего массива в виджете списка (на основе элементов) с помощью Qt и C ++, я пробовал это, но это не работает:

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

Спасибо !

2

Решение

Это не может работать:

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(),

5

Другие решения

Я думаю, что это должно быть простым решением для того, что вы просите.

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();
}
}
}
0

По вопросам рекламы [email protected]