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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: стиль Qt::Tool под Linux и Windows разное поведение, стили окон,убрать с taskBar  (Прочитано 3130 раз)
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.

Помогите если кто сталкивался
Записан
shadone
Гость
« Ответ #1 : Сентябрь 15, 2009, 12:59 »

надежно это не получится реализовать в X11 - в разных window manager будет работать по разному.
Qt::Tool с указанием родителя окна - это наиболее правильное поведение - при этом window manager знает взаимоотношение между окнами и может, например, поднять главное окно когда пользователь поднимает вспомогательное - tool window.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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