connect(ui->ComboBox,SIGNAL(currentIndexChanged()),this,SLOT(switchcall()));
在 qt 中,组合框项目我没有,服务器,客户端。当我选择其中之一时,它应该调用 switchcall 函数。在这个函数中,我想根据组合框中的选择执行任务。怎么做?
您没有将参数放在SIGNAL
/SLOT
语句中。
connect(ui->ComboBox,SIGNAL(currentIndexChanged(const QString&)),
this,SLOT(switchcall(const QString&)));
或者,您可以使用重载信号来使用项目索引。
要从 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
}
使用自动连接:
void on_ComboBox_currentIndexChanged(int index);
自动连接模板:
on_<control_name>_<signal_name>(<signal params>)
根据Qt 文档,QOverload<T>::of()
辅助函数可用于指定您正在使用的重载信号,
connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
[=](int index){ /* ... */ });
使用这个方便的助手,不需要使用旧的SIGNAL()
和SLOT()
语法。