Конструктор, QTimer::singleShot, виртуальные методы... |
Здравствуйте, гость ( Вход | Регистрация )
Конструктор, QTimer::singleShot, виртуальные методы... |
hoRUS |
12.8.2011, 13:10
Сообщение
#1
|
Студент Группа: Участник Сообщений: 30 Регистрация: 10.7.2008 Из: Москва Пользователь №: 231 Спасибо сказали: 5 раз(а) Репутация: 0 |
Приветствую всех!
Понятно, что вызывать виртуальные функции из конструктора суперкласса с целью инициализировать объект подкласса каким-то специфичным для него образом просто так нельзя, но иногда очень хочется сделать что-то подобное, чтобы не индусить код лишней копипастой . Возникает вопрос, можно ли как-то это надежно и безопасно сделать средствами Qt. Например, можно использовать в конструкторе
, где initInstance() - какой-то слот, в котором вызываются виртуальные функции? И дополнительно, я так понимаю, после создания экземпляра объекта нужно говорить что-то вроде QCoreApplication::processEvents() . Насколько такие действия правомерны, нет ли там скрытых (или не скрытых) граблей? Спасибо. |
|
|
Litkevich Yuriy |
12.8.2011, 18:12
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
И дополнительно, я так понимаю, после создания экземпляра объекта нужно говорить что-то вроде QCoreApplication::processEvents() . нет не нужно, если конечно после конструктора у тебя в длительном цикле программа не находится.Насколько такие действия правомерны, нет ли там скрытых (или не скрытых) граблей? это обычная работа таймера.
|
|
|
PAFOS |
19.8.2011, 8:06
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Есть на это функция QMetaObject::invokeMethod() (см. подробности в документации)
Очень полезная функция, надо признать... |
|
|
Текстовая версия | Сейчас: 25.4.2024, 2:48 |