crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> стиль Qt::Tool под Linux и Windows разное поведение, стили окон, убрать с taskBar,
vvs83
  опции профиля:
сообщение 14.9.2009, 13:29
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2009
Пользователь №: 1090

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте!
Существует такая проблема:
Главное окно приложения QMainWindow
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
        .......
}


и есть несколько окон графиков GrWindow, которые тоже наследованы от QMainWindow и создаются динамически по мере надобности из MainWindow

//конструктор 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-ом

GrWindow *wnd =new GrWindow(this);
wnd->show();


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

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

Сообщение отредактировал Admin - 14.9.2009, 13:36
Причина редактирования: Учимся использовать тэг CODE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 14.9.2009, 13:34
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(vvs83 @ 14.9.2009, 14:29) *
которые тоже наследованы от QMainWindow

а зачем так?
зачем в одной программе несколько экзепляров QMainWindow?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vvs83
  опции профиля:
сообщение 14.9.2009, 13:43
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2009
Пользователь №: 1090

Спасибо сказали: 0 раз(а)




Репутация:   0  


GrWindow очень мощный график, в котором есть menu,statusBar, centalWidget и splitter(для различных типов графиков) тоесть без QMainWindow не обойтись. А вообще переводил чужую программу с Builder C++ на Qt, которая уже лет 10 разрабатывалась
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 14.9.2009, 16:10
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Все таки я тоже не совсем понимаю, почему нельзя было сделать MDI приложение?
На дочерних окнах так же можно создать menu,statusBar, centalWidget и тем более splitter/

Глянь: Пример многодокументного интерфейса (MDI)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vvs83
  опции профиля:
сообщение 14.9.2009, 16:44
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2009
Пользователь №: 1090

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 14.9.2009, 16:10) *
Все таки я тоже не совсем понимаю, почему нельзя было сделать MDI приложение?
На дочерних окнах так же можно создать menu,statusBar, centalWidget и тем более splitter/

Глянь: Пример многодокументного интерфейса (MDI)


Скорее всего так и прийдётся сделать, если ничего не поможет. MDI не делал по соображениям совместимости со старой прогой, считал что если Builder позволил сделать то и Qt справится, тем более под Win почти всё устроило, а вот под Linux криво пошло( когда parent =0 то начинает плодить на таскбаре окна)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 14.9.2009, 16:48
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(vvs83 @ 14.9.2009, 17:44) *
а вот под Linux криво пошло( когда parent =0 то начинает плодить на таскбаре окна)

ну что ты на пингвинов грешишь.
это еще доказать надо что косяк, а если и косяк то может багрепорт поможет.
под рукой нет проверить не могу.
может KDE не свеж или еще что, может даже настройка Хсов где нить подобная есть... разбираться надо время.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.9.2009, 18:37
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 14.9.2009, 20:10) *
На дочерних окнах так же можно создать menu,statusBar, centalWidget и тем более splitter/
Если окна не наследники QMainWindow, то просто так не получится, т.к. в QMainWindow свой компоновшик есть для управления всем этим добром.

Но во вложенных окнах (Subwindow) MDI можно обойтись без menu,statusBar... их можно просто переключать в зависимости от текущего вложенного окна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vvs83
  опции профиля:
сообщение 21.9.2009, 16:54
Сообщение #8


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2009
Пользователь №: 1090

Спасибо сказали: 0 раз(а)




Репутация:   0  


Выход нашел созданием невидимого окна с parent=0. Единственный недостаток в X11 каждое окошко выводится на панели задач
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.12.2024, 16:50