16,815
社区成员




不知道什么原因,也不知到构造函数出了什么问题,请大神看看
/////////////////////myphubutton.h///////////////////////////////
#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H
#include <QPushButton>
class MyPushButton : public QPushButton
{
Q_OBJECT
public:
explicit MyPushButton(QWidget *parent = nullptr);
MyPushButton();
~MyPushButton();
signals:
};
#endif // MYPUSHBUTTON_H
/////////////////////myphubutton.cpp///////////////////////////////
#include "mypushbutton.h"
#include <QDebug>
MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{
qDebug() << "我的按钮类构造调用";
}
//MyPushButton::MyPushButton() : QPushButton()
//{
// qDebug() << "我的按钮类构造调用";
//}
MyPushButton::~MyPushButton()
{
qDebug() << "我的按钮类析构" ;
}
////mywidget.cpp 主窗口 ////////////////////////////////////////
#include "mywidget.h"
#include<QPushButton>//按钮控件的头文件
#include<mypushbutton.h>
myWidget::myWidget(QWidget *parent)
: QWidget(parent) //触发列表,有父类使用父类没有默认0
{
//创建一个自己的按钮对象
MyPushButton * myBtn = new MyPushButton; //这句出问题 无法构造
myBtn->setText("我自己的按钮");
myBtn->move(200,0);
myBtn->setParent(this);
}
myWidget::~myWidget()
{
}
出错内容
J:\QT_PRJ\01_FirstProject\mywidget.cpp:53: error: call of overloaded 'MyPushButton()' is ambiguous
MyPushButton * myBtn = new MyPushButton;
使用版本qt5.9.9
编译器MinGW5.5
^
explicit MyPushButton(QWidget *parent = nullptr);
MyPushButton();
主要原因是系统已经给你写了一个参数默认的构造函数了,当你创建对象不传参数时,就会有两个构造函数符合要求,系统不知道给你调用哪一个
//创建一个自己的按钮对象
MyPushButton1 *btn3=new MyPushButton1(this);
加一个this 参数就好了
请问怎么解决的
非常感谢
你已经知道了吧? 注掉不带参数的构造函数的声明