【问题标题】:Display array content in a List Widget Qt C++在列表小部件 Qt C++ 中显示数组内容
【发布时间】:2012-11-13 19:34:23
【问题描述】:

我想用 Qt 和 C++ 在 List Widget(基于项目)中显示我的数组的一些内容,我试过这个,但它不起作用:

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

谢谢!

【问题讨论】:

    标签: c++ arrays qt qstring


    【解决方案1】:

    这不行:

    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 中。然后,您可以使用 addItems() 简单地传递整个 QStringList。

    【讨论】:

      【解决方案2】:

      我认为这应该是您所要求的简单解决方案。

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

      【讨论】:

        猜你喜欢
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        相关资源
        最近更新 更多