【问题标题】:Qt5 QComboBox with QCheckBox Multiple SelectorsQt5 QComboBox 与 QCheckBox 多个选择器
【发布时间】:2013-08-19 01:08:28
【问题描述】:

我使用 Qt Designer 设计了 ​​GUI,并且在尝试创建具有多个选择的组合框时,我注意到我似乎无法通过等效的 .CPP 文件修改在 .UI 文件中创建的 GUI 元素。

所以基本上我想知道这是否是一个已知功能,我需要仅通过 .CPP 文件实现 GUI,还是我没有正确实现我的多项选择?我是 Qt 新手,有点困惑。

我试过这个,但是当我尝试在我现有的应用程序中实现它时它不起作用:ComboBox of CheckBoxes?

这是我的代码的一部分。我初始化在 Qt Designer 中设计的 GUI,然后根据链接的答案创建一个新模型并为其分配数据,然后尝试将我的组合框之一的模型更改为新模型。当我运行应用程序时,组合框在那里但为空。

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ...

    QStandardItemModel model(3, 1); // 3 rows, 1 col
    for (int r = 0; r < 3; ++r)
    {
        QStandardItem* item = new QStandardItem(QString("Item %0").arg(r));

        item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
        item->setData(Qt::Unchecked, Qt::CheckStateRole);

        model.setItem(r, 0, item);
    }

    ui->comboBox_2->setModel(&model);
}

【问题讨论】:

  • I tried this but it's not working when I try to implement it within my existing app: ComboBox of CheckBoxes? 您将不得不提供更多有关此的信息。什么不工作?显示一些你尝试过的代码。
  • 我自己运行了另一个问题的答案中给出的代码,当然,它可以完美地工作,但是当我尝试创建一个模型时,使用该答案中提供的确切代码,然后分配将它添加到我的应用程序中的现有组合框,该框显示为空。 (如,我点击了下拉菜单,没有任何反应)
  • 向我们展示您的代码。向我们展示您创建模型的部分,向其中添加项目并将其设置到组合框。
  • 有什么想法吗?

标签: qt user-interface qt-designer qcombobox multipleselection


【解决方案1】:

我设法通过在头文件中将新模型声明为指针然后实例化它并将其分配给组合框来修复它。 :D

【讨论】:

  • QStandardItemModel 对象在您的 MainWindow 构造函数完成后超出范围。这就是为什么你必须用new初始化你的对象。
  • 因为您在组合框中进行了多项选择,当组合框处于非活动状态(没有弹出窗口时)时会显示哪个项目?
  • @Aleksander 我想我只是将其重新填充为“首先选择评估”或其他内容。几个月前完成了那个项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 2010-11-22
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多