Russian Qt Forum
Ноябрь 24, 2024, 04:13
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Помогите с наследованием сигнала
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помогите с наследованием сигнала (Прочитано 4311 раз)
kvrus
Гость
Помогите с наследованием сигнала
«
:
Август 13, 2012, 09:52 »
Есть базовый класс (наследник QTabWidget) который содержит в себе обработчики события драг и дропа, и содержит
сигнал, который испускается когда драг и дроп произошел над экземпляром этого класса.
Дальше есть несколько классов наследников, которые хотят заполучить эту возможность отлавливать драг и дроп
и испускать сигнал. После запуска приложения выводится сообщение QObject::connect: No such signal B::change(int, int)
такая запись на все экземпляры, и еще один раз пишет тоже самое но для родительского класса.
Я полагал, что сигналы - это приват область и они должны наследоваться.
В чем тогда прикол?
Записан
_OLEGator_
Гость
Re: Помогите с наследованием сигнала
«
Ответ #1 :
Август 13, 2012, 09:54 »
Код показывай
Записан
kvrus
Гость
Re: Помогите с наследованием сигнала
«
Ответ #2 :
Август 13, 2012, 10:04 »
Это родитель:
class Plotter : public QTabWidget{
Q_OBJECT
QImage m_plotterIcon;
QString m_name;
public:
explicit Plotter(QWidget *parent = 0);
QImage getIcon() const{
return m_plotterIcon;
}
int plotterID;
QString getName() const{
return m_name;
}
signals:
void changePlot(int currentPlotter, int nextPlotter);
protected:
void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
};
от него наследуются все перечисленные ниже классы вот по такому принципу:
class evmplot : public QTabWidget
Это коннекты в bg_w.cpp
connect(timeplotter, SIGNAL(changePlot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(freqplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(constellationplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(vectorplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(Ieyeplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(Qeyeplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(spectrogramplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(symtableplotter,SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(evmplotter,SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
Это в консоли приложения после запуска:
Object::connect: No such signal TimePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:26
Object::connect: No such signal FreqPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:27
Object::connect: No such signal ConstellationPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:28
Object::connect: No such signal VectorPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:29
Object::connect: No such signal EyePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:30
Object::connect: No such signal EyePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:31
Object::connect: No such signal SpectrogramPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:32
Object::connect: No such signal SymTablePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:33
Object::connect: No such signal Plotter::change_plot(int,int) in ..\VSA\bg_w.cpp:34
D:\ASP\prg2012\VSA-build-desktop\debug\VSA.exe завершился с кодом 0
Записан
kvrus
Гость
Re: Помогите с наследованием сигнала
«
Ответ #3 :
Август 13, 2012, 10:05 »
Ой)))) напутал чуток)))
Записан
kvrus
Гость
Re: Помогите с наследованием сигнала
«
Ответ #4 :
Август 13, 2012, 10:08 »
Просмотр профиля Email Личное сообщение (Online)
Re: Помогите с наследованием сигнала
« Ответ #2 : Сегодня в 10:04 »
ПроцитироватьЦитировать Редактировать сообщениеИзменить Удалить сообщениеУдалить
Это родитель:
class Plotter : public QTabWidget{
Q_OBJECT
QImage m_plotterIcon;
QString m_name;
public:
explicit Plotter(QWidget *parent = 0);
QImage getIcon() const{
return m_plotterIcon;
}
int plotterID;
QString getName() const{
return m_name;
}
signals:
void changePlot(int currentPlotter, int nextPlotter);
protected:
void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
};
от него наследуются все перечисленные ниже классы вот по такому принципу:
class EvmPlotter : public Plotter - Вот это наследник
Это коннекты в bg_w.cpp
connect(timeplotter, SIGNAL(changePlot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(freqplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(constellationplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(vectorplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(Ieyeplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(Qeyeplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(spectrogramplotter, SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(symtableplotter,SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
connect(evmplotter,SIGNAL(change_plot(int,int)),this, SLOT(setCurrentIndex(int,int)));
Это в консоли приложения после запуска:
Object::connect: No such signal TimePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:26
Object::connect: No such signal FreqPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:27
Object::connect: No such signal ConstellationPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:28
Object::connect: No such signal VectorPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:29
Object::connect: No such signal EyePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:30
Object::connect: No such signal EyePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:31
Object::connect: No such signal SpectrogramPlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:32
Object::connect: No such signal SymTablePlotter::change_plot(int,int) in ..\VSA\bg_w.cpp:33
Object::connect: No such signal Plotter::change_plot(int,int) in ..\VSA\bg_w.cpp:34
D:\ASP\prg2012\VSA-build-desktop\debug\VSA.exe завершился с кодом 0
Записан
_OLEGator_
Гость
Re: Помогите с наследованием сигнала
«
Ответ #5 :
Август 13, 2012, 10:09 »
Ты издеваешься блин?!
У тебя сигнатура сигнала changePlot, а ты используешь неизвестный сигнал change_plot
Записан
kvrus
Гость
Re: Помогите с наследованием сигнала
«
Ответ #6 :
Август 13, 2012, 10:11 »
елы палы!
Спасибо большое. Сижу все привожу к единому стилю в проекте вот и получилась запарка
Записан
_OLEGator_
Гость
Re: Помогите с наследованием сигнала
«
Ответ #7 :
Август 13, 2012, 10:12 »
Рефакторинг? Не, не слышал.
Есть средства для рефакторинга, а ты все руками походу делаешь.
Записан
kvrus
Гость
Re: Помогите с наследованием сигнала
«
Ответ #8 :
Август 13, 2012, 10:14 »
сейчас покурю по автоматизированным средствам. Еще раз спасибо.
Записан
_OLEGator_
Гость
Re: Помогите с наследованием сигнала
«
Ответ #9 :
Август 13, 2012, 10:16 »
Если ты используешь Qt Creator, то помоему там есть встроенные средства для рефакторинга.
Записан
Serr500
Гость
Re: Помогите с наследованием сигнала
«
Ответ #10 :
Август 13, 2012, 16:46 »
Да там точно есть. Правой крысой по объекту и в меню "Рефакторинг".
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...