0

我用 :

ui->组合框->setCurrentIndex(1);

但这条指令不调用函数

无效 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")); 
}
4

2 回答 2

1

如果 setCurrentIndex() 没有真正改变,则不会发出 currentIndexChanged() 信号。这意味着在您的示例中,先前的索引已经是 1。

于 2014-08-20T14:23:20.157 回答
0

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

void on_Combobox_currentIndexChanged(const QString &arg1);

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

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

于 2013-05-07T08:02:52.993 回答