2013-05-07 478 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.