Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kompotFX от Июль 08, 2010, 22:11



Название: временное окно
Отправлено: 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 класс?



Название: Re: временное окно
Отправлено: BRE от Июль 08, 2010, 22:16
Посмотри на реализацию класса QToolTip, там все просто и прозрачно.


Название: временное окно
Отправлено: kompotFX от Июль 08, 2010, 23:12
ну может и прозрачно, но там как бы почти 700 строк кода.
Как бы что попроще?


Название: Re: временное окно
Отправлено: BRE от Июль 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 сек.
}
 


Название: Re: временное окно
Отправлено: kompotFX от Июль 09, 2010, 10:55
O! Супер!!! Как все просто в Qt!

Спасибо огромное!!!
 ;D