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

在 qt 中,组合框项目我没有,服务器,客户端。当我选择其中之一时,它应该调用 switchcall 函数。在这个函数中,我想根据组合框中的选择执行任务。怎么做?

4

4 回答 4

21

您没有将参数放在SIGNAL/SLOT语句中。

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

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

于 2012-12-13T08:34:42.780 回答
5

要从 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
}
于 2019-09-02T06:57:49.607 回答
2

使用自动连接:

void on_ComboBox_currentIndexChanged(int index);

自动连接模板:

on_<control_name>_<signal_name>(<signal params>)
于 2021-04-22T14:58:38.023 回答
1

根据Qt 文档QOverload<T>::of()辅助函数可用于指定您正在使用的重载信号,

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

使用这个方便的助手,不需要使用旧的SIGNAL()SLOT()语法。

于 2020-09-06T03:47:09.603 回答