Russian Qt Forum

Qt => Общие вопросы => Тема начата: Pivnya4ok от Август 03, 2011, 22:17



Название: Не могу создать собственный слот
Отправлено: Pivnya4ok от Август 03, 2011, 22:17
Привет всем, поставили задачу написать приложение на Qt, до этого писал на Java.
Прошелся по урокам, но вот создать собственный работающий слот не получается.
Вот пример кода:

test.cpp:
Код:
#include <QTextEdit>
#include <QSlider>
#include “test.h”
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
text = new QTextEdit;
slider = new QSlider(Qt::Horizontal);
slider->setRange(0,99);

connect(slider, SIGNAL(valueChanged(int)), text, SLOT(setText1()));
}

void MyWidget::setText1()
{
text->setText(“hello”);
}

test.h:
Код:
#include <QWidget>

class QTextEdit;
class QSlider;
class MyWidget : public QWidget
{
Q_OBJECT

public:
MyWidget(QWidget *parent=0);
public slots:
void setText1();
signals:
void valueChanged(int newValue);
private:
QTextEdit *text;
QSlider *slider;
}

Компилится нормально, но при запуске пишет No such slots QTextEdit::setText1()
Смотрел похожие темы, но там проблема была либо в объявлении Q_OBJECTS, либо в том, что не было хэдера с объявлением класса.

Если поменять setText1() например на clear() в connect(slider, SIGNAL(valueChanged(int)), text, SLOT(setText1())), то работает все нормально.

В чем может быть проблема? Спасибо


Название: Re: Не могу создать собственный слот
Отправлено: Пантер от Август 03, 2011, 22:23
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setText1()));


Название: Re: Не могу создать собственный слот
Отправлено: Pivnya4ok от Август 04, 2011, 08:10
Хм, спасибо, попробую.


Название: Re: Не могу создать собственный слот
Отправлено: lit-uriy от Август 06, 2011, 21:24
А что "хм".
text - QTextEdit;
а в функции connect такие аргументы (из асистента):
connect(отправитель, сигнал_отправителя, получатель, слот-получателя).
И ты пишешь:
connect(отправитель, сигнал_отправителя, объект_типа_QTextEdit, слот_которого_нет_в_QTextEdit)