当组合框中的项目发生变化时,如何调用函数?

时间:2012-12-13 08:27:11

标签: qt combobox qt4

connect(ui->ComboBox,SIGNAL(currentIndexChanged()),this,SLOT(switchcall()));

在qt,combobox项目我没有,服务器,客户端。当我选择其中一个它应该调用switchcall函数。在这个函数我想执行任务取决于在combobox.how中的选择吗?

4 个答案:

答案 0 :(得分:14)

您尚未将参数放在SIGNAL / SLOT语句中。

connect(ui->ComboBox,SIGNAL(currentIndexChanged(const QString&)),
        this,SLOT(switchcall(const QString&)));

或者,您可以使用项目索引,使用重载信号。

答案 1 :(得分:1)

要从QComboBox项的QComboBox更改事件获取索引,请使用:

connect(ui->comboBox, SIGNAL(currentIndexChanged(int)),
            this, SLOT(indexChanged(int)));

在mainwindow.h中:

private slots:
    void indexChanged(int index);

在mainwindow.cpp中:

void MainWindow::indexChanged(int index)
{
    // Do something here on ComboBox index change
}

答案 2 :(得分:0)

基于Qt documentationsQOverload<T>::of()辅助函数可用于指定您正在使用的重载信号,

connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
    [=](int index){ /* ... */ });

使用此方便的帮助程序,无需使用旧的SIGNAL()SLOT()语法。

答案 3 :(得分:0)

使用自动连接:

void on_ComboBox_currentIndexChanged(int index);

自动连接模板:

on_<control_name>_<signal_name>(<signal params>)