Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vvs83 от Сентябрь 14, 2009, 15:56



Название: стиль Qt::Tool под Linux и Windows разное поведение, стили окон,убрать с taskBar
Отправлено: vvs83 от Сентябрь 14, 2009, 15:56
Здравствуйте!
Существует такая проблема:
Главное окно приложения QMainWindow
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
   : QMainWindow(parent, flags)
{
   ui.setupUi(this);
       .......
}
 
и есть несколько окон графиков GrWindow, которые тоже наследованы от QMainWindow и создаются динамически по мере надобности из MainWindow

Код
C++ (Qt)
//GrWindow
GrWindow::GrWindow(QWidget *parent,  const char *name ): QMainWindow( 0, Qt::Tool)
{
         setWindowTitle(name);
     setAttribute(Qt::WA_DeleteOnClose);
         ........
}
 

Единственное условие при при клике по title главного окна(MainWindow) должно выходить на передний план, а остальные GrWindow-с находиться под ним.
В таком варианте под Windows в принципе это работает,а вот под OpenSuse( среда KDE) каждое созданное окно GrWindow отображается в taskbar(видно из-за parent=0) и MainWindow не показывается поверх всех GrWindow.

Эксперименты с заданием parent-ом

Код
C++ (Qt)
GrWindow *wnd =new GrWindow(this);
wnd->show();
 


MainWindow для всех GrWindow выводит все дочерние GrWindow поверх MainWindow.

Помогите если кто сталкивался


Название: Re: стиль Qt::Tool под Linux и Windows разное поведение, стили окон,убрать с taskBar
Отправлено: shadone от Сентябрь 15, 2009, 12:59
надежно это не получится реализовать в X11 - в разных window manager будет работать по разному.
Qt::Tool с указанием родителя окна - это наиболее правильное поведение - при этом window manager знает взаимоотношение между окнами и может, например, поднять главное окно когда пользователь поднимает вспомогательное - tool window.