我想用 Qt 和 C++ 在 List Widget(基于项目)中显示我的数组的一些内容,我试过这个,但它不起作用:
QString exemple[2] = 'blablabla'
ui->listWidgetResult->addItem(exemple[2].toStdString().c_str());
谢谢 !
这是行不通的:
QString example[2] = 'blablabla'
首先,'
是char
值,而不是字符串。其次,您要声明一个包含两个 QString 的数组,但将其分配给 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);
}
最后,不要使用普通数组来保存 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();
}
}
}