我实际上正在使用 Qt 5.10.1 进行项目。我正在使用 Linux,而我的合作伙伴正在使用 Windows。
我们编写了这段代码:
QCheckBox* _survive[9] = {
ui->survive0, ui->survive1, ui->survive2, ui->survive3,
ui->survive4, ui->survive5, ui->survive6, ui->survive7, ui->survive8
};
QCheckBox* _born[9] = {
ui->born0, ui->born1, ui->born2, ui->born3,
ui->born4, ui->born5, ui->born6, ui->born7, ui->born8
};
std::copy_n(_survive, 9, survive); // because arrays are not directly assignable
std::copy_n(_born, 9, born);
for (int i = 0; i < 9; i++) {
connect(born[i], &QCheckBox::clicked, this, &Automate_2D::on_born_i_clicked);
connect(survive[i], &QCheckBox::clicked, this, &Automate_2D::on_survive_i_clicked);
}
其中survive0
..survive8
和born0
..born8
是复选框。
编译时,它不会在 Windows 上显示错误,但在 Linux 上出现此错误:
void QAbstractButton::clicked(bool)' 在此上下文中受到保护
connect(born[i], &QCheckBox::clicked, this, &Automate_2D::on_born_i_clicked);
我能做些什么来解决它?我不明白为什么它只出现在 Linux 上。