错误原因是因为不同的组件定义方式,在添加到布局时,需要根据情况使用地址符号&
第一种以对象的方式定义的组件,在加到布局中时要带地址符号
QPushButton btn_begin; // 栈上分配的 QPushButton 对象
QGridLayout *HLayout5 = new QGridLayout();
HLayout5->setSpacing(10);
HLayout5->addWidget(&btn_begin, 0, 0); // 注意这里没有额外的 '&'
第二种以指针的方式定义的组件,加到布局时不带地址符号:
QPushButton *btn_begin = new QPushButton; // 堆上分配的 QPushButton 指针
QGridLayout *HLayout5 = new QGridLayout();
HLayout5->setSpacing(10);
HLayout5->addWidget(btn_begin, 0, 0); // 直接传递指针
如果两种情况搞反了,就会报错标题。