Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конструктор, QTimer::singleShot, виртуальные методы...
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
hoRUS
Приветствую всех!

Понятно, что вызывать виртуальные функции из конструктора суперкласса с целью инициализировать объект подкласса каким-то специфичным для него образом просто так нельзя, но иногда очень хочется сделать что-то подобное, чтобы не индусить код лишней копипастой :rolleyes: . Возникает вопрос, можно ли как-то это надежно и безопасно сделать средствами Qt. Например, можно использовать в конструкторе

QTimer::singleShot(0, this, SLOT(initInstance()));


, где initInstance() - какой-то слот, в котором вызываются виртуальные функции?
И дополнительно, я так понимаю, после создания экземпляра объекта нужно говорить что-то вроде QCoreApplication::processEvents() .
Насколько такие действия правомерны, нет ли там скрытых (или не скрытых) граблей?
Спасибо.
Litkevich Yuriy
Цитата(hoRUS @ 12.8.2011, 16:10) *
И дополнительно, я так понимаю, после создания экземпляра объекта нужно говорить что-то вроде QCoreApplication::processEvents() .
нет не нужно, если конечно после конструктора у тебя в длительном цикле программа не находится.

Цитата(hoRUS @ 12.8.2011, 16:10) *
Насколько такие действия правомерны, нет ли там скрытых (или не скрытых) граблей?
это обычная работа таймера.
PAFOS
Есть на это функция QMetaObject::invokeMethod() (см. подробности в документации)

Очень полезная функция, надо признать...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.