Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 23:29   #1
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию Проблемы с созданием слота у потомка QWidget

Никак не могу понять в чём проблема. Сдаелал класс, унаследовав его от QWidget. При это добавил несколько слотов:
Код:
class paper:public QWidget
{
    QImage *im;
    figure* f;

public:
    paper(QWidget *parent);
    void mousePressEvent(QMouseEvent *);
    void paintEvent(QPaintEvent *);
public slots:
    void pt();
    void ln();
    void sq();
    void cr();
};
потом всё подключил, вроде как полагается
Код:
    connect(ui->pushButton, SIGNAL(clicked()), ui->widget, SLOT(pt()));
    connect(ui->pushButton_2, SIGNAL(clicked()), ui->widget, SLOT(ln()));
    connect(ui->pushButton_3, SIGNAL(clicked()), ui->widget, SLOT(sq()));
    connect(ui->pushButton_4, SIGNAL(clicked()), ui->widget, SLOT(cr()));
И при компиляции получил следующее:
Код:
Object::connect: No such slot QWidget::pt() in ..\paint2\mainwindow.cpp:9
Object::connect:  (sender name:   'pushButton')
Object::connect:  (receiver name: 'widget')
Object::connect: No such slot QWidget::ln() in ..\paint2\mainwindow.cpp:10
Object::connect:  (sender name:   'pushButton_2')
Object::connect:  (receiver name: 'widget')
Object::connect: No such slot QWidget::sq() in ..\paint2\mainwindow.cpp:11
Object::connect:  (sender name:   'pushButton_3')
Object::connect:  (receiver name: 'widget')
Object::connect: No such slot QWidget::cr() in ..\paint2\mainwindow.cpp:12
Object::connect:  (sender name:   'pushButton_4')
Object::connect:  (receiver name: 'widget')
при этом QT даже не ругнулся, слоты просто не работают.

Последний раз редактировалось Farrel; 28.05.2011 в 23:38. Причина: Смайлы вместо скобок появились, прикольно тока не практично
Farrel вне форума Ответить с цитированием
Старый 29.05.2011, 11:05   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Полагаю, дело в том, что вы пропустили макрос Q_OBJECT в начале объявления класса:
Код:
class paper:public QWidget
{
    Q_OBJECT

    QImage *im;
    figure* f;

public:
    paper(QWidget *parent);
    void mousePressEvent(QMouseEvent *);
    void paintEvent(QPaintEvent *);
public slots:
    void pt();
    void ln();
    void sq();
    void cr();
};
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 29.05.2011, 17:16   #3
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Ща запустить прогу к сожалению не на чем, но макрос я точно ставить пробовал. Тогда, если мне не ихменяет память вылетало неск. ерроров по поводу образения к таблитце vtable (опять же если я правильно помню) при определении собственно самих функций.
Farrel вне форума Ответить с цитированием
Старый 29.05.2011, 17:39   #4
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию

Цитата:
Сообщение от Farrel Посмотреть сообщение
Ща запустить прогу к сожалению не на чем, но макрос я точно ставить пробовал. Тогда, если мне не ихменяет память вылетало неск. ерроров по поводу образения к таблитце vtable (опять же если я правильно помню) при определении собственно самих функций.
Ну добавляйте макрос и потом пишите что за ошибки вылезли! Или тогда пишите коннекты через Object::connect.
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Старый 30.05.2011, 22:56   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Нашел статейку по поводу этой ошибки. У меня, к примеру (тоже щас Qt осваиваю) было по этой причине:
Цитата:
Загляните в c-, cpp-файлы и убедитесь, что классы там не определяются. MOC разбирает только заголовочные файлы;
Ибо все содержалось в файле main.cpp
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с созданием div в Опера blaqdog JavaScript, Ajax 0 05.05.2011 19:27
Проблемы с созданием компонентов в Делфи 7 Grey Stallion Общие вопросы Delphi 0 02.02.2011 18:18
Проблемы с созданием билдера Mihanches Общие вопросы Delphi 6 20.10.2010 13:33
Проблемы с созданием игр Andreas.cpp Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 12.03.2010 14:30
Проблемы с созданием таймера girkoff Общие вопросы C/C++ 11 07.02.2010 18:57