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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: временное окно  (Прочитано 3592 раз)
kompotFX
Гость
« : Июль 08, 2010, 22:11 »

есть такая задача:
при нажатии на определенное место (допустим кнопка) на главном окне должно появиться дочернее окно типа splashscreen на короткое время (картинка,текст, без разницы - вобщем QLabel виджет)
как сделать так, чтобы код главного окна был загружен по минимуму. Ну например:
Код:

void MyMainWnd::onButtonClick()
{
     SomeStaticHelper::ShowTemporaryWindow(this);
}

вопрос в том, как реализовать статическую функцию ShowTemporaryWindow() помошного класса, чтобы он сам создал обьект QLabel и после определенных секунд его сам удалил?

примерный код для QLabel окна ну типа такой:
Код:
void SomeStaticHelper::ShowTemporaryWindow(MyMainWnd* wnd)
{
    QPixmap pixmap(":splash.png");
    QLabel* splash = new QLabel(wnd);
    splash->setPixmap(pixmap);
    splash->setGeometry(10,10,pixmap.size().width(), pixmap.size().height());
    splash->show();
}

но надо чтобы этот QLabel после создания корректно удалялся через определенное время.
Как реализовать SomeStaticHelper класс?

Записан
BRE
Гость
« Ответ #1 : Июль 08, 2010, 22:16 »

Посмотри на реализацию класса QToolTip, там все просто и прозрачно.
Записан
kompotFX
Гость
« Ответ #2 : Июль 08, 2010, 23:12 »

ну может и прозрачно, но там как бы почти 700 строк кода.
Как бы что попроще?
Записан
BRE
Гость
« Ответ #3 : Июль 09, 2010, 07:58 »

Код
C++ (Qt)
void SomeStaticHelper::ShowTemporaryWindow(MyMainWnd* wnd)
{
   QPixmap pixmap(":splash.png");
   QLabel* splash = new QLabel(wnd);
   splash->setPixmap(pixmap);
   splash->setGeometry(10,10,pixmap.size().width(), pixmap.size().height());
   splash->show();
 
   QTimer *timer = new QTimer;
   connect( timer, SIGNAL( timeout() ), splash, SLOT( deleteLater() ) );
   connect( timer, SIGNAL( timeout() ), timer, SLOT( deleteLater() ) );
   timer->start( 10000 ); // 10 сек.
}
 
Записан
kompotFX
Гость
« Ответ #4 : Июль 09, 2010, 10:55 »

O! Супер!!! Как все просто в Qt!

Спасибо огромное!!!
 Смеющийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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