Russian Qt Forum
Ноябрь 26, 2024, 05:44
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Q_OBJECT в пустом не наследуемом классе, возможно?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Q_OBJECT в пустом не наследуемом классе, возможно? (Прочитано 4426 раз)
soulsaver
Гость
Q_OBJECT в пустом не наследуемом классе, возможно?
«
:
Январь 20, 2012, 09:26 »
Дело в том, что пока созданный руками класс не унаследуешь от какого нить предка (или самого) QObject макросс Q_OBJECT воспринимается компилятором как набор не нужных символов)). Извините за столь странный вопрос), но класс без поддержки слотов мне не нужен, да и огромный QObject тоже не хочется наследовать для своих целей, в котором будет валяться груз 200 из сотен методов и свойств. Спасибо за ответы )
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #1 :
Январь 20, 2012, 09:55 »
Сигналы/слоты работают только у наследников QObject.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
popper
Гость
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #2 :
Январь 20, 2012, 09:55 »
Из справки:
Цитировать
This macro requires the class to be a subclass of QObject
Цитата: soulsaver от Январь 20, 2012, 09:26
будет валяться груз 200 из сотен методов и свойств.
Сигналы и слоты преобразуются в стандартный код на этапе выполнения moc. В исполняемом модуле от них ничего не остается.
Сам класс QObject содержит не так уж много методов. Не вижу каких-либо проблем с наследованием.
Записан
soulsaver
Гость
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #3 :
Январь 20, 2012, 10:13 »
понял(. спасибо большое. ну да, куда деваться, от QObject буду наследовать). просто хотелось чтоб было все красиво(и даже в оперативе бы по меньше лежало хлама, понимаю что сейчас этим можно принебречь), только мои методы и.т.д.)) но это действительно очень жирно, репа бы треснула если можно было бы)))). Спасибо большое). Еще даже может подумаю, буду вызывать слоты главного виджета а они в свою очередь вызывают обычные функции класса созданного руками, но это наверно не стоит выделки), ничего я от этого не выйграю, кроме 500кб оперативной памяти ).
Записан
mutineer
Гость
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #4 :
Январь 20, 2012, 11:49 »
Цитата: soulsaver от Январь 20, 2012, 10:13
просто хотелось чтоб было все красиво(и даже в оперативе бы по меньше лежало хлама, понимаю что сейчас этим можно принебречь), только мои методы и.т.д.))
Хочешь чтобы было красиво - не юзай сигналы-слоты, ибо они
(о боже мой, какой кошмар!!!)
используют код, вызывающий метод по его символьному имени
(да-да, по строке)
«
Последнее редактирование: Январь 21, 2012, 10:34 от mutineer
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #5 :
Январь 20, 2012, 22:49 »
Цитата: mutineer от Январь 20, 2012, 11:49
Цитата: soulsaver от Январь 20, 2012, 10:13
просто хотелось чтоб было все красиво(и даже в оперативе бы по меньше лежало хлама, понимаю что сейчас этим можно принебречь), только мои методы и.т.д.))
Хочешь чтобы было красиво - не юзай сигналы-слоты, ибо они
(о боже мой, какой кошмар!!!)
используют код, вызывающий метод по его символьному имени
(да-да, по строке)
Давно?
Записан
mutineer
Гость
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #6 :
Январь 21, 2012, 10:20 »
не знаю, предыдущие версии не смотрел. при выполнении connect макросы SIGNAL и SLOT преобразовывают переданные значения в строки. Может, конечно, найденный метод кешируется и находится по строковому имени только при connect, а дальше используются цифровые значения
ладно, не буду сейчас утверждать, в понедельник еще сорцы почитаю...
«
Последнее редактирование: Январь 21, 2012, 10:33 от mutineer
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #7 :
Январь 21, 2012, 10:34 »
Цитата: mutineer от Январь 21, 2012, 10:20
не знаю, предыдущие версии не смотрел. при выполнении connect макросы SIGNAL и SLOT преобразовывают переданные значения в строки. Может, конечно, найденный метод кешируется и находится по строковому имени только при connect, а дальше используются цифровые значения
Это правда. Метод вызывается по ид а не по строке.
Записан
Gorthauer
Гость
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #8 :
Январь 21, 2012, 12:45 »
Цитата: mutineer от Январь 21, 2012, 10:20
не знаю, предыдущие версии не смотрел. при выполнении connect макросы SIGNAL и SLOT преобразовывают переданные значения в строки. Может, конечно, найденный метод кешируется и находится по строковому имени только при connect, а дальше используются цифровые значения
ладно, не буду сейчас утверждать, в понедельник еще сорцы почитаю...
По символьному представлению они только в момент connect'а связываются, потом методы вызываются по обычному целочисленному смещению. Посмотрите для интереса содержимое moc файлов. По стринговому id методы вызваются только через QMetaMethod::invoke, но это редко когда нужно да и обычно такие методы весьма редко вызываются. И да, в Qt5 связывание сигналов со слотами можно будет делать в compile time!
Записан
mutineer
Гость
Re: Q_OBJECT в пустом не наследуемом классе, возможно?
«
Ответ #9 :
Январь 23, 2012, 11:50 »
Да, посмотрел, действительно строки играют роль только при коннекте. Извиняюсь, был неправ
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...