2015-10-15 147 views
0

我是QT和GUI相關編程的新手,並且希望在項目中執行2層選擇菜單。我很感激幫助的時間。QTCreator中QComboBox的有條件顯示

實施例:組合框1具有類似的選項:1.屏幕尺寸 - 中等2.屏幕大小 - 大和取決於我想在組合框中2.

用戶以顯示屏幕的分辨率不同的選項可以更改組合框1的選擇次數,框2應該顯示相應的選項。

我已經嘗試使用QComboBox.setEnabled(假)和真正的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; 
    } 
} 
+0

如果你可以發佈任何代碼,這將有助於回答你的問題。 –

+0

有兩個選項,有兩個組合框,並根據當前選擇調用'setVisible()',或清除並重新填充選擇更改中的組合框。您必須在代碼中使用自定義插槽來實現此功能,默認插槽將不夠用。但是如果你展示一些迄今爲止已經嘗試過的代碼,會更好。 – Bowdzone

+0

void interface :: changeFunctionx(int index) { delete f; switch(index) { case 0: version = 1; functionSely-> setVisible(1); 休息; 情況1: version = 1; 休息; } } functionSely是組合框,我將它初始設置爲0。問題是當我在functionSelx中做出正確的選擇時,程序退出執行。 –

回答

0

的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指數))

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

謝謝Jeet。讓我使用你的建議,很快就會更新。 –