Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Qt свой класс кнопки.

307
18 апреля 2010 года
Artem_3A
863 / / 11.04.2008
День добрый, такое дело, потребовалось мне наличие у QPushButton слотов по нажатию левой и правой кнопки крысы. Наследуюсь:

Код:
#ifndef WMyBtn_H
#define WMyBtn_H

#include <QObject>
#include <QPushButton>
#include <QMouseEvent>

class WMyBtn : public QPushButton
{
    Q_OBJECT
public:
    WMyBtn(QWidget* p);

signals:
    void clickLeftButton(void);
    void clickRightButton(void);

protected:
    void mouseReleaseEvent(QMouseEvent* e);
};

#endif // WMyBtn_H


Код:
#include "WMyBtn.h"

WMyBtn::WMyBtn(QWidget* p)
    :QPushButton(p)
{}

void WMyBtn::mouseReleaseEvent(QMouseEvent *e)
{
    if(e->button() == Qt::RightButton)
        emit clickRightButton();
    else
        emit clickLeftButton();
}


при этом получаю ругань линкера:

 
Код:
:4: undefined reference to `vtable for WMyBtn'
:4: undefined reference to `vtable for WMyBtn'
:4: undefined reference to `vtable for WMyBtn'
:4: undefined reference to `vtable for WMyBtn'
:10: undefined reference to `WMyBtn::clickRightButton()'
:12: undefined reference to `WMyBtn::clickLeftButton()'
:-1: error: collect2: ld returned 1 exit status


в теории работать должно, но вот на практике все так то совсем не так. все возможные перебилды не помогли, Qt 4.6, QtCreator 1.3.

Есть идея пересобрать либу, но может есть варианты надежней и проще?

ЗЫ: если убрать сигналы и макрос Q_OBJECT, то все нормально работает.
43K
18 апреля 2010 года
loki231
76 / / 27.09.2009
Надо ещё выполнить
 
Код:
moc WMyBtn.h -o moc_WMyBtn.c
Получившийся файл moc_WMyBtn.c откомпилировать и прилинковать.
307
18 апреля 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: loki231
Надо ещё выполнить
 
Код:
moc WMyBtn.h -o moc_WMyBtn.c
Получившийся файл moc_WMyBtn.c откомпилировать и прилинковать.



вообще ожидал, что это проделает QtCreator... баг, надо им в багтрекер написать!=)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог