Qt 5 QComboBox setCurrentIndex

时间:2013-05-07 07:40:43

标签: qt

我用:

  

UI-> Combobox-> setCurrentIndex(1);

但该指令不会调用函数

  

void on_comboBox_currentIndexChanged(const 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")); 
}

2 个答案:

答案 0 :(得分:1)

如果没有真正更改,

setCurrentIndex()不会发出currentIndexChanged()信号。这意味着在您的示例中,上一个索引已经是1。

答案 1 :(得分:0)

插槽很可能没有自动连接,因为你在一个地方写了 comboBox 而在另一个地方写了 Combobox ,所以试试:

void on_Combobox_currentIndexChanged(const QString &arg1);

//你需要在构建之前运行qmake

LE:我建议避免使用自动连接功能并自己编写连接语句(您需要注意避免命名像on_WIDGETNAME_SIGNALNAME这样的插槽,因为最终可能会使用两次调用的插槽)