Qt5带QCheckBox多个选择器的QCOMBOX
我使用Qt Designer设计了GUI,在尝试创建具有多个选择的组合框时,我注意到我似乎无法通过等效的.CPP文件修改在.UI文件中创建的GUI元素 所以基本上我想知道这是一个已知的特性,我需要通过.CPP文件单独实现GUI,还是我没有正确地实现多重选择?我刚接触Qt,有点困惑 我尝试过这个,但当我尝试在现有应用程序中实现它时,它不起作用: 这是我的代码的一部分。我初始化在Qt Designer中设计的GUI,然后根据链接的答案创建一个新模型并为其分配数据,然后尝试将我的一个组合框的模型更改为新模型。当我运行应用程序时,组合框在那里,但为空Qt5带QCheckBox多个选择器的QCOMBOX,qt,user-interface,qt-designer,qcombobox,multipleselection,Qt,User Interface,Qt Designer,Qcombobox,Multipleselection,我使用Qt Designer设计了GUI,在尝试创建具有多个选择的组合框时,我注意到我似乎无法通过等效的.CPP文件修改在.UI文件中创建的GUI元素 所以基本上我想知道这是一个已知的特性,我需要通过.CPP文件单独实现GUI,还是我没有正确地实现多重选择?我刚接触Qt,有点困惑 我尝试过这个,但当我尝试在现有应用程序中实现它时,它不起作用: 这是我的代码的一部分。我初始化在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);
}
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent)、ui(新ui::MainWindow)
{
用户界面->设置用户界面(此);
...
QStandarItemModel模型(3,1);//3行,1列
对于(int r=0;r<3;++r)
{
QStandardItem*item=新的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);
}
我通过在头文件中将新模型声明为指针,然后实例化它并将其分配给组合框来修复它:D我尝试了这个方法,但当我尝试在我现有的app:ComboBox of checkbox中实现它时,它不起作用?
你必须给出更多的信息。什么不起作用?显示一些您尝试过的代码。我已经自行运行了另一个问题答案中给出的代码,当然,它可以完美地工作。但是,当我尝试创建一个模型时,使用该答案中提供的确切代码,然后将其分配给我的应用程序中的现有组合框,该框将显示为空。(如中所示,我点击了下拉菜单,但什么也没发生)显示您的代码。向我们展示您创建模型的部分,向其中添加项目并将其设置为组合框。有什么问题吗?您的QStandardItemModel
对象在您的主窗口
构造函数完成后超出范围。这就是为什么你必须用new
来初始化你的对象。因为你在组合框中有多个选项,当组合框处于非活动状态时(没有弹出窗口时),会显示哪个项目?@Aleksander我想我只是重新填充了它,以“选择评估优先”之类的方式。几个月前完成了那个项目。