2013-05-07 151 views
0

我使用:Qt的5 QComboBox setCurrentIndex

UI-> Combobox-> setCurrentIndex(1);

但這指令不調用函數

空隙on_comboBox_currentIndexChanged(常量的QString & ARG1);

爲什麼會這樣?

void ConsigneMouvement::show(int AxeType) 
{ 
    axeType = AxeType; 
    switch(axeType) 
    { 
     case 1: 
      ui->comboBox->setCurrentIndex(0); 
      ui->comboBox->setEnabled(true); 
     break; 
     case 2 : 
      ui->comboBox->setCurrentIndex(1); 
      ui->comboBox->setEnabled(false); 
     break; 
     case 3 : 
      ui->comboBox->setCurrentIndex(0); 
      ui->comboBox->setEnabled(true); 
     break; 
     case 4 : 
      ui->comboBox->setCurrentIndex(0); 
      ui->comboBox->setEnabled(true); 
     break; 
    } 
    this->exec(); 
} 

和功能

void ConsigneMouvement::on_comboBox_currentIndexChanged(const QString &arg1) 
{ 
    if(arg1 == "Absolu") 
     ui->label_distance->setText(tr("Position")); 
    else 
     ui->label_distance->setText(tr("Distance")); 
} 
+0

你能提供一個[簡單,完整的示例代碼](http://sscce.org),它顯示了這個問題? – 2013-05-07 07:50:10

+1

您的索引是否真的發生了變化?如果以前的索引也是1,則信號不會發出。 – Amartel 2013-05-07 07:53:54

+0

您是否剛剛將示例代碼作爲答案發布?這是不可接受的,通過'編輯'按鈕添加您的問題,並刪除'答案'。 – cmannett85 2013-05-07 08:06:19

回答

0

很有可能是因爲你在一個地方,組合框在其他寫道組合框插槽不會自動連接,所以嘗試:

void on_Combobox_currentIndexChanged(const QString &arg1); 

//你需要在build之前運行qmake

LE:我建議,以避免自動連接功能,並自己編寫連接語句(你必須要小心,以避免命名像on_WIDGETNAME_SIGNALNAME插槽,因爲你可能最終得到一個名爲兩次槽)

1

setCurrentIndex()如果沒有真正改變,它不會發射currentIndexChanged()信號。這意味着在你的例子中,以前的索引已經是1.