Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';void QAbstractButton::单击(bool)和#x27;受到保护_C++_Qt_Qabstractbutton - Fatal编程技术网

C++ ';void QAbstractButton::单击(bool)和#x27;受到保护

C++ ';void QAbstractButton::单击(bool)和#x27;受到保护,c++,qt,qabstractbutton,C++,Qt,Qabstractbutton,我实际上正在使用Qt5.10.1进行一个项目。我正在使用Linux,我的合作伙伴正在使用Windows 我们已经编写了这段代码: QCheckBox* _survive[9] = { ui->survive0, ui->survive1, ui->survive2, ui->survive3, ui->survive4, ui->survive5, ui->survive6, ui->survive7, ui->

我实际上正在使用Qt5.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);
    }
QCheckBox*_survive[9]={
用户界面->生存0,用户界面->生存1,用户界面->生存2,用户界面->生存3,
用户界面->生存4,用户界面->生存5,用户界面->生存6,用户界面->生存7,用户界面->生存8
};
QCheckBox*_born[9]={
ui->born0,ui->born1,ui->born2,ui->born3,
ui->born4,ui->born5,ui->born6,ui->born7,ui->born8
};
std::复制n(_survive,9,survive);//因为数组不能直接赋值
标准::拷贝n(_born,9,born);
对于(int i=0;i<9;i++){
连接(born[i],&QCheckBox::clicked,this,&Automation_2D::on_born_i_clicked);
连接(生存[i],&QCheckBox::clicked,this,&Automation_2D::on_survive_i_clicked);
}
其中
survive0
survive8
born0
born8
是复选框

编译时,在Windows上不会显示错误,但在Linux上我有以下错误:

void QAbstractButton::clicked(bool)“”在此上下文中受保护

连接(born[i],&QCheckBox::clicked,this,&Automation_2D::on_born_i_clicked)


我能做些什么来修复它?我不明白为什么它只出现在Linux上。

如果它能帮助别人,我找到了解决方案。 在QT中,我打开了“项目”窗口(在左边),在

项目>Deskop QT 5.11.0 GCC 64位>构建

我刚刚用我刚刚创建的一个新文件更改了编译的文件路径,该文件是空的

然后我再次尝试编译我的项目,它成功了


(感谢您的帮助)

也许您可以创建一个自己的类,比如MyQAbstractButton(从QAbstractButton派生)和friend您自己的类?
QAbstractButton::单击
。我们必须了解更多的背景。您使用的Qt版本可能不是您认为单击的版本,是一个公共信号。看见还有一些东西正在弄乱您的代码。与特定问题无关,但您可以使用而不是
QCheckBox*…[9]
。这将使
副本变得不必要;您将能够编写
survive=\u survive