Russian Qt Forum
Октябрь 02, 2024, 15:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Действия при выполнении формы.  (Прочитано 10442 раз)
Alex03
Гость
« Ответ #15 : Ноябрь 02, 2007, 16:42 »

Автору вопроса топика - ИМХО в конструкторе диалога:
QTimer::singleShot(0, this, SLOT(doSomething()))
или
QApplication::postEvent(this,.....)

Первый вариант намного проще.
A QTimer with a timeout interval of 0 will time out as soon as all the events in the window system's event queue have been processed.
Записан
ритт
Гость
« Ответ #16 : Ноябрь 02, 2007, 17:19 »

а если слюни нужны вообще только один раз - в самые первые секунды/минуты отображения диалога? например, строим кэш...

чего вы прям баталию устроили? какой ивент ни выбери, всё-равно должен быть флажок (например, "уже отработали - иди дальше")

и, если слюноотделяющий метод должен вызываться лишь единожды, я бы перегрузил экзек вместо ивентлистнера Улыбающийся
Записан
ритт
Гость
« Ответ #17 : Ноябрь 02, 2007, 17:20 »

б**дь...я - птица говорун Грустный
Записан
Dodge
Гость
« Ответ #18 : Ноябрь 03, 2007, 00:31 »

Вопрос на засыпку: у кого костыль костыльнее? Улыбающийся

Да тут и нечего засыпать, showEvent вызывается гораздо реже paintEvent'a (а именно при показе и, как Вы сами заметили, при ресторинге), стало быть слюновыделяющие навороты будут выполняться тоже гораздо реже, и соответственно раздражать пользователя тоже гораздо реже.
Это бесспорно, но у меня еще есть аргументы... если делать doSomething сразу после отрисовки, то это гарантирует что "форма"(прости меня Линус Торвальд) уже отрисована и ничего больше не произошло, в showEvent "форма" тоже уже отрисована, но эвент происходит не сразу после отрисовки...
Вообще спор не о чем, тк ситуация простите идиоццкая, если надо чтото сграбить с "формы"(мне это слово уже начинает нравиццо), то на мой взгляд следить за ее показом совсем не обязательно, а если надо чтото сделать после отображения, то это:
Код:
class MyWidget : public QDialog {
    void exec(...) {
        QDialog::exec(...);
        doSomething();
    }
я прав?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #19 : Ноябрь 06, 2007, 01:58 »

А может, устроим конкурс - кто придумает самый извращенный способ?
Типа там - стартануть второй процесс, отловить момент появления формы, захватить гуй-поток, выполнить отрисовку, застрелиться...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.114 секунд. Запросов: 23.