Название: Мерцание отстегнутых QDockWidget при старте приложения.
Отправлено: alexman от Апрель 26, 2011, 15:03
Есть наследник от QMainWindow. В конструкторе создается туча отстегнутых QDockWidget-ов. Режимов редактирования у приложения много и поэтому сразу же их необходимо скрыть. Проблема заключается в том, что dock widget-ы все равно на мгновение появляются при старте. Как это можно исправить? Вот упрощенный код (на "сильных" ПК вряд ли увидете мерцание): main.cpp #include <QtCore/QDebug> #include <QtGui/QApplication> #include <QtGui/QDockWidget> #include <QtGui/QMainWindow>
int main( int argc, char** argv ) { QApplication app( argc, argv );
QMainWindow* window = new QMainWindow();
QDockWidget* dockWidget1 = new QDockWidget( window ); dockWidget1->setAllowedAreas( Qt::NoDockWidgetArea ); dockWidget1->resize( 250, 250 ); window->addDockWidget( Qt::LeftDockWidgetArea, dockWidget1 ); dockWidget1->setFloating( true ); dockWidget1->hide();
QDockWidget* dockWidget2 = new QDockWidget( window ); dockWidget2->setAllowedAreas( Qt::NoDockWidgetArea ); dockWidget2->resize( 250, 250 ); window->addDockWidget( Qt::LeftDockWidgetArea, dockWidget2 ); dockWidget2->setFloating( true ); dockWidget2->hide();
QDockWidget* dockWidget3 = new QDockWidget( window ); dockWidget3->setAllowedAreas( Qt::NoDockWidgetArea ); dockWidget3->resize( 250, 250 ); window->addDockWidget( Qt::LeftDockWidgetArea, dockWidget3 ); dockWidget3->setFloating( true ); dockWidget3->hide();
QDockWidget* dockWidget4 = new QDockWidget( window ); dockWidget4->setAllowedAreas( Qt::NoDockWidgetArea ); dockWidget4->resize( 250, 250 ); window->addDockWidget( Qt::LeftDockWidgetArea, dockWidget4 ); dockWidget4->setFloating( true ); dockWidget4->hide();
app.setActiveWindow( window ); window->show();
return app.exec(); }
application.pro: TEMPLATE = app LANGUAGE = C++
CONFIG += release qt warn_on
SOURCES += main.cpp
TARGET = application
Название: Re: Мерцание отстегнутых QDockWidget при старте приложения.
Отправлено: GreatSnake от Апрель 26, 2011, 15:09
Поменяй местами: C++ (Qt) dockWidget1->setFloating( true ); dockWidget1->hide();
Название: Re: Мерцание отстегнутых QDockWidget при старте приложения.
Отправлено: alexman от Апрель 26, 2011, 15:35
Спасибо, работает! Объяснишь, почему надо так?
Название: Re: Мерцание отстегнутых QDockWidget при старте приложения.
Отправлено: GreatSnake от Апрель 26, 2011, 15:40
Потому что при твоём варианте создавалось отстёгнутое окно и сразу показывалось, а уже потом ты его прятал. В случае, если сначала док спрятать, то после создания отстёгнутого окна оное показываться не будет.
|