Russian Qt Forum
Ноябрь 25, 2024, 23:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу создать собственный слот  (Прочитано 3618 раз)
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())), то работает все нормально.

В чем может быть проблема? Спасибо
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 03, 2011, 22:23 »

connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setText1()));
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Pivnya4ok
Гость
« Ответ #2 : Август 04, 2011, 08:10 »

Хм, спасибо, попробую.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Август 06, 2011, 21:24 »

А что "хм".
text - QTextEdit;
а в функции connect такие аргументы (из асистента):
connect(отправитель, сигнал_отправителя, получатель, слот-получателя).
И ты пишешь:
connect(отправитель, сигнал_отправителя, объект_типа_QTextEdit, слот_которого_нет_в_QTextEdit)
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.