Russian Qt Forum

Qt => Вопросы новичков => Тема начата: hank от Декабрь 12, 2011, 11:24



Название: Не получается соединить сигнал и слот
Отправлено: hank от Декабрь 12, 2011, 11:24
Хочу соединить сигнал со слотом, но ничего не выходит.

Имею следующий класс:
Код
C++ (Qt)
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QPushButton>
 
class Widget : public QWidget
{
 
public:
   explicit Widget(QWidget *parent=0);
 
   QPushButton *myButton1;
 
public slots:
   void mySlot();
 
};
 
#endif // WIDGET_H
 

Реализация:
Код
C++ (Qt)
#include "widget.h"
 
#include <QHBoxLayout>
 
 
Widget::Widget(QWidget *parent) : QWidget(parent)
{    
   myButton1 = new QPushButton("Press me",this);
 
   QHBoxLayout *m = new QHBoxLayout(this);
 
   m->addWidget(myButton1);
 
   this->setLayout(m);
 
   connect(this->myButton1,SIGNAL(clicked()),this,SLOT(mySlot()));
}
 
void Widget::mySlot()
{
   myButton1->setText("ololo");
}
 

При сборке получаю уведомление: Object::connect: No such slot QWidget::mySlot() in widget.cpp:21
Соответственно ничего не работает.

Пробовал в описание класса добавлять макрос Q_OBJECT - программа вообще не компилируется.

Как быть?


Название: Re: Не получается соединить сигнал и слот
Отправлено: black_engel от Декабрь 12, 2011, 11:31
Цитировать
Пробовал в описание класса добавлять макрос Q_OBJECT - программа вообще не компилируется.

Напиши какие ошибки выдает компилятор


Название: Re: Не получается соединить сигнал и слот
Отправлено: Hellraiser от Декабрь 12, 2011, 11:32
Q_OBJECT использовать обязательно. После вставки заново запустить qmake.


Название: Re: Не получается соединить сигнал и слот
Отправлено: hank от Декабрь 12, 2011, 11:36
Тэкс.
Вроде заработало.

При добавлении Q_OBJECT были ошибки, которые я вот сейчас нашел в статье (http://igorkam.blogspot.com/2011/03/qt-undefined-reference-to-vtable.html).
Вылечилось очисткой и пересборкой проекта.