2015-12-05 5 views
0

Так что в основном я унаследован от QPushButton, и я хочу обработать сигнал прямо внутри класса. Я также продвинул кнопку, которую я хочу, чтобы этот новый класс.Невозможно настроить метод наследуемого класса как слот для сигнала щелчка

Так что я сделал:

QObject::connect(ui->pickWatermarkButton, SIGNAL(clicked()),ui->pickWatermarkButton, SLOT(handleButton())); 

handleButton существует и объявлен как открытый слот. Однако, когда я нажимаю кнопку, ничего не происходит.

Я изменил слот на функцию местоположения, внутри mainWindow и удивил, он работает! По-видимому, он отказывается работать, когда я пытаюсь использовать в качестве слота метод в унаследованном классе!

+2

Убедитесь, что в классе кнопок есть макрос 'Q_OBJECT' и что' handleButton() 'объявлен в разделе' slots: '. – LogicStuff

+1

Как сказал LogicStuff. Если это не недостающий макрос Q_OBJECT, добавьте заголовок подкласса QPushButton здесь. Также проверьте консоль на наличие ошибок при вызове connect(). –

+0

Я добавил макрос Q_OBJECT. Но теперь я получаю «неопределенные ссылки на vtable». И да, я определил деструктор! – GCooper

ответ

0

Чтобы решить эту проблему, просто добавьте макрос Q_OBJECT в свой унаследованный класс.

Если вы получаете ошибки «неопределенной ссылки на vtable», убедитесь, что вы определили деструктор. Если они все еще появляются, щелкните правой кнопкой мыши на своем проекте и выберите «запустить qmake», а затем снова создайте проект.