• 6365阅读
  • 3回复

[提问]QT信号和槽的问题,出现undefined reference问题 [复制链接]

上一主题 下一主题
离线865851458
 

只看楼主 倒序阅读 楼主  发表于: 2015-02-04
我在定义信号之后,使用emit时,报undefined reference to 'OcrSrollArea::selectChoic(int x, int y)'
这是为什么???希望各位大大,帮忙

这是我的头文件
#ifndef OCRSROLLAREA_H
#define OCRSROLLAREA_H


#include <QScrollArea>

class OcrSrollArea : public QScrollArea
{
private:
    void mousePressEvent(QMouseEvent *e);
    void selectChoic(int x, int y);

public:
    OcrSrollArea();
    ~OcrSrollArea();
signals:
    void selectChoiced(int, int);
};

#endif // OCRSROLLAREA_H

这是我的cpp文件
#include "OcrSrollArea.h"
#include <QMouseEvent>
#include <QScrollBar>
#include <iostream>
using namespace std;

OcrSrollArea::OcrSrollArea()
{

}

OcrSrollArea::~OcrSrollArea()
{

}

void OcrSrollArea::mousePressEvent(QMouseEvent *e)
{
    cout<<"horizontalScrollBar()->value()"<<this->horizontalScrollBar()->value()<<endl;
    cout<<"verticalScrollBar()->value()"<<this->verticalScrollBar()->value()<<endl;
    int x = e->x() + this->horizontalScrollBar()->value();
    cout<<"x ======== "<<x<<endl;
    int y= e->y() + this->verticalScrollBar()->value();
    cout<<"y======== "<<y<<endl;
//    emit selectChoiced();
//      selectChoic(x, y);
//      emit selectChoiced(x, y);
}

void OcrSrollArea::selectChoic(int x, int y)
{
    emit selectChoiced(x, y);
}

离线dbzhang800

只看该作者 1楼 发表于: 2015-02-04
别忘了
Q_OBJECT
离线865851458

只看该作者 2楼 发表于: 2015-02-04
回 dbzhang800 的帖子
dbzhang800:别忘了
Q_OBJECT (2015-02-04 16:25) 

class OcrSrollArea : public QScrollArea
{
Q_OBJECT //你是说在这里加吗?
private:
    void mousePressEvent(QMouseEvent *e);
    void selectChoic(int x, int y);
......
}
离线uidab

只看该作者 3楼 发表于: 2015-02-04
你发的是信号??
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
快速回复
限100 字节
 
上一个 下一个