• 4477阅读
  • 0回复

为什么自己派生出的QPusbButton在connect时出错呢(已解决) [复制链接]

上一主题 下一主题
离线磐石
 
只看楼主 正序阅读 楼主  发表于: 2010-04-21
myButton是继承QPushButton的,myWidget是继承QWidget的,myDialog是继承QDialog的,它们的关系是这样的,
myButton作用很简单,就是让按钮被点击时发出的clicked()信号有标志

myButton的简单继承class myButton:public QPushButton
{
      Q_OBJECT
   public:
      myButton(QWidget *parent=0);
      void setId(int id){Id=id;}
   public slots:
         void click();
   signals:
    void clicked(int);
   private:
       int Id;
};
myButton::myButton(QWidget *parent):QPushButton(parent)
{
  Id=0;
  connect(this,SIGNAL(clicked()),this,SLOT(click()));
  
}
void myButton::click()
{
  emit(clicked(Id));
}

//在myWidget中实例化了QPusButton和myButton
class myWidget : public QWidget            
{
   public:
         myWidget(QWidget *parent=0);
.................
   public:
        QPusButton *Btn;
       myButton   *myBtn;
.......................
}
在myDialog中实例化了myWidget
PS:  #include"mybutton.h"      //在myDialog.h中包含了mybutton.h就好了
class myDialog : public QDialog
{
   Q_OBJECT
public:
   myDialog(QWidget *parent=0);
public slots:
   void myBtnClicked(int);
   void BtnClicked();
........................
  private:
    myWidget *mywidget;
.....................
}
错误就发生在这里:
myDialog::myDialog(QWidget *parent):QDialog(parent)
{
  mywidget=new myWidget(this);
   connect(mywidget->Btn,SIGNAL(clicked()),this,SLOT(BtnClicked()));//这句编译时没错的
   connect(mywidget->myBtn,SIGNAL(clicked(int)),this,SLOT(myBtnClicked(int)));//这句编译时出错,错误信息如下

  
}

void myDialog::myBtnClicked(int d)
{
.........
}
void myDialog::BtnClicked()
{
...........
}
编译时的出错信息
error:no matching function for call to 'myDialog::connect(myButton*&,const char[14],myDialog* const, const char[17])'
[ 此帖被磐石在2010-04-21 22:27重新编辑 ]
不怕做不到,只怕想不到
快速回复
限100 字节
 
上一个 下一个