• 5809阅读
  • 2回复

我的第一个Qt小程序,帮忙看看? [复制链接]

上一主题 下一主题
离线kapenware
 
只看楼主 正序阅读 楼主  发表于: 2009-09-18
#include <iostream>
#include <QtCore>
using namespace std;


class Employee : public QObject
{
   Q_OBJECT
public:
   Employee()
   {
      mySalary = 0;
      mySalary2 = 0;
      connect(this,SIGNAL(salaryChanged(int)),this,SLOT(setSalary(int)));
   }
   int salary() const
   {
      return mySalary;
   }
public slots:
   void setSalary(int newSalary);

signals:
   void salaryChanged(int newSalary);

private:
   int mySalary;
   int mySalary2;

};

void Employee::salaryChanged(int newSalary)
{
   mySalary = newSalary;
}

void Employee::setSalary(int newSalary)
{
   mySalary2 = newSalary;
}

int main()
{   cout << "begin" << endl;
   Employee *em = new Employee();
        //ToDO
   cout << "begin" << endl;
   return 0;
}



加上那个Q_OBJECT宏后,编译通不过,错误信息为 undefined reference to `vtable for Employee'
去掉Q_OBJECT后能通过编译,但运行时出错,错误信息为 Object::connect: No such signal QObject::salaryChanged(int)

请问如何解决这个问题啊?

离线kapenware
只看该作者 2楼 发表于: 2009-09-19
谢谢啊, 今天折腾一天,搞定了。。。
离线浪漫天使
只看该作者 1楼 发表于: 2009-09-19
signals:
   void salaryChanged(int newSalary);
这说明 salaryChanged 是信号 信号是用来发送的
而无需定义成函数
你却
void Employee::salaryChanged(int newSalary)
{
   mySalary = newSalary;
}
把它弄成函数了,这是不对的。
快速回复
限100 字节
 
上一个 下一个