【问题标题】:Conditional display of QComboBox in QTCreatorQTCreator中QComboBox的条件显示
【发布时间】:2015-10-15 20:23:57
【问题描述】:

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

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

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

我已经尝试使用 QComboBox.setEnabled(False) 和 True,正如Disabling QComboBox in pyqt 中所建议的那样 但它对我没有用,我当然错过了一些东西。

我的代码片段:

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

【问题讨论】:

  • 如果您可以发布任何代码,这将有助于回答您的问题。
  • 有两个选项,有两个组合框并根据当前选择在两者上调用setVisible(),或者在选择更改时清除并重新填充组合框。您必须在代码中使用自定义插槽来实现这一点,默认插槽是不够的。但是,如果您显示一些您迄今为止尝试过的代码会更好。
  • void interface::changeFunctionx(int index) { delete f;开关(索引){案例0:版本= 1;函数Sely->setVisible(1);休息;案例1:版本= 1;休息; } } functionSely 是我最初设置为 0 的组合框。问题是当我在 functionSelx 中做出正确选择时,程序会退出执行。

标签: qt


【解决方案1】:

QComboBox 的数据可以使用以下逻辑重新填充

QComboBox::clear()
QComboBox::insertItems(0,QStringList);

//在类中声明需要的变量

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

本例中使用了两个组合框。即cbo1(2项)(用户选择)&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;
    }
}

【讨论】:

  • 谢谢吉特。让我用你的建议,很快就会更新。
猜你喜欢
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多