connect(ui->ComboBox,SIGNAL(currentIndexChanged()),this,SLOT(switchcall()));
在qt,combobox项目我没有,服务器,客户端。当我选择其中一个它应该调用switchcall函数。在这个函数我想执行任务取决于在combobox.how中的选择吗?
答案 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 documentations,QOverload<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>)