在QTCreator中有条件地显示QComboBox

时间:2015-10-15 20:23:57

标签: qt

我是QT和GUI相关编程的新手,希望在项目中进行2层选择菜单。我很感激您的帮助时间。

示例:组合框1具有以下选项:1。屏幕尺寸 - 中2.屏幕尺寸 - 大且取决于我想在组合框2中显示不同的屏幕分辨率选项。

用户可以多次更改组合框1选择,方框2应显示相应的选项。

我尝试使用Disabling QComboBox in pyqt中建议的QComboBox.setEnabled(False)和True  但它对我没有用,我肯定错过了一些东西。

我的代码片段:

void interface::changeFunctionx(int index)
{
    delete f;
    switch(index)
    {
    case 0:
        version = 1;
        functionSely->setVisible(1);
        break;

    case 1:
        version = 1;
        //some other function call still seeing how gui works
        break;
    }
}

1 个答案:

答案 0 :(得分:0)

可以使用以下逻辑

重新填充QComboBox的数据
QComboBox::clear()
QComboBox::insertItems(0,QStringList);

//声明类中所需的变量

class myclass : public QMainWindow {
    QList<QString> lst;
    QStringList ql1,ql2;
}

此示例中使用的两个组合框。即,cbo1(2项)(用户选择)&amp; cbo2(重新填充数据)

//组合框填充数据准备
//在这个例子中,下面的函数只调用一次(从构造函数的结束行调用)(初始化)

void fnPrepareStaticData(){
    lst.push_back("Option-1");
    lst.push_back("Option-2");
    lst.push_back("Option-3");
    ql1 = (QStringList(lst));

    lst.clear();
    lst.push_back("New-1");
    lst.push_back("New-2");
    lst.push_back("New-3");
    ql2 = (QStringList(lst));
}

//插槽添加到QComboBox(currentIndexChanged(int index))

void MainWindow::on_cbo1_currentIndexChanged(int index)
{
    ui->cbo2->clear();
    switch (index) {
    case 0:
        ui->cbo2->insertItems(0,ql1);
        break;
    case 1:
        ui->cbo2->insertItems(0,ql2);
        break;
    default:
        break;
    }
}