devconnect.cpp:57:39: error: object of type 'MyButton' cannot be assigned because its copy assignment operator is implicitly deleted mybutton.h:11:18: note: copy assignment operator of 'MyButton' is implicitly deleted because base class 'QPushButton' has a deleted copy assignment operator qpushbutton.h:102:5: note: 'operator=' has been explicitly marked deleted here qglobal.h:434:12: note: expanded from macro 'Q_DISABLE_COPY'
时间: 2024-02-06 14:04:22 浏览: 170
这个错误的意思是在devconnect.cpp文件中的第57行,无法对等号左边的变量进行赋值操作。可能的原因是,MyButton类的基类QPushButton的复制赋值运算符被显式删除,因此导致MyButton类的复制赋值运算符也被隐式删除。这意味着无法使用赋值运算符将一个MyButton对象赋值给另一个MyButton对象。
解决这个问题的方法是,要么使用MyButton类的复制构造函数来创建一个新的MyButton对象,要么使用指针来操作MyButton对象。如果你想使用指针,可以将MyButton类的成员变量声明为指向MyButton对象的指针,然后使用new运算符在堆上创建对象。例如:
```cpp
class MyButton : public QPushButton {
public:
MyButton(QWidget *parent = nullptr) : QPushButton(parent) {}
};
class DevConnect : public QMainWindow {
private:
MyButton *mybutton; // 声明成指针类型
public:
DevConnect(QWidget *parent = nullptr) : QMainWindow(parent) {
mybutton = new MyButton(this); // 使用new运算符在堆上创建对象
// 设置按钮属性
}
};
```
这样,就可以通过指针来操作MyButton对象了。注意,在使用指针时,需要手动管理内存,即在合适的时机使用delete运算符释放对象所占用的内存。
阅读全文