crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Свое окно под другим., linux
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 20:31
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


К примеру открыл тот же видео плеер, не на весь экран.
Мое окно должно помещятся под ним. У меня на 10пикс. с каждой стороны выглядывает.
Сейчас я тут разобрался как получать положение окна.
Затем через setGeometry() ставлю свое окно куда нужно.
Но при переносе оно конечно остается на месте. Если setGeometry запихнуть в while то окно вообще не появляется.
Как сделать чтобы окно мое таскалось вместе с "родительским"?

И нужно что бы окно было всегда под тем окном, под которым оно прячится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.2.2011, 20:37
Сообщение #2


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

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

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




Репутация:   94  


Цитата(RazrFalcon @ 7.2.2011, 22:31) *
Если setGeometry запихнуть в while то окно вообще не появляется.
:)

Цитата(RazrFalcon @ 7.2.2011, 22:31) *
Как сделать чтобы окно мое таскалось вместе с "родительским"?
при перемещении "родителя" перемещать и "дочернее".
Вообще можно и без кавычек. Просто указать виджету явно, что он - окно. Удобнее всего использовать фильтр событий.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 20:43
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


а? я не понял...
Родитель - не мое окно. Это плеер, или вообще что угодно.
Что значит сделать окном "явно"?
Какой фильтр?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.2.2011, 20:47
Сообщение #4


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

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

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




Репутация:   94  


Примерно так:
MainWindow::MainWindow(...)
{
    botomWindow = BotomWindow(this, Qt::Window | Qt::FramelessWindowHint);
    installEventFilter(botomWindow);
}

BotomWindow::eventFilter(QObject *obj, QEvent *event)
{
     if ((event->type() == QEvent::Move) && (obj == parent()) ) {
         // двигаем это нижнее оконо вслед за родителем
         return true;
     } else {
         // standard event processing
         return QObject::eventFilter(obj, event);
     }
}


Цитата(RazrFalcon @ 7.2.2011, 22:43) *
Родитель - не мое окно. Это плеер, или вообще что угодно.
как ты намерен его координаты получать? И вообще определять, что оно изменило положение?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 20:50
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Цитата(Litkevich Yuriy @ 7.2.2011, 19:47) *
как ты намерен его координаты получать? И вообще определять, что оно изменило положение?

#!/bin/bash
xwininfo -id `wmctrl -l | grep SMPlayer | cut -c1-10`  | grep 'Absolute upper-left X' | cut -c27-
xwininfo -id `wmctrl -l | grep SMPlayer | cut -c1-10`  | grep 'Absolute upper-left Y' | cut -c27-
xwininfo -id `wmctrl -l | grep SMPlayer | cut -c1-10` | grep Width: | cut -c10-
xwininfo -id `wmctrl -l | grep SMPlayer | cut -c1-10` | grep Height: | cut -c11-

Только они аж после того как я переместил меняются <_<

Пример выше не подходит, вроде, это же не мое окно =/


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.2.2011, 21:18
Сообщение #6


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

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

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




Репутация:   94  


Может быть тогда тебе попробовать ловить события с помощью
bool QApplication::x11EventFilter ( XEvent * event ) [virtual]

Либо воспользоватся сторонней разработкой расширяющей Qt -- Qxt.
В частности классом QxtWindowSystem, с помощью него можно найти идентификатор окна и, потенциально, поставить на это окно фильтр событий
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 21:49
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Судя по всему Qxt - лучший вариант.
Теперь буду пробовать.

Сообщение отредактировал RazrFalcon - 8.2.2011, 11:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.2.2011, 7:44
Сообщение #8


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

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

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




Репутация:   94  


Цитата(RazrFalcon @ 7.2.2011, 23:49) *
Ссылку на описание какое то можно, пожалуйста?
в документации есть ссылка, на главной странице, ищи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 8.2.2011, 10:52
Сообщение #9


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Сам виноват...
Разобрался.

Сообщение отредактировал RazrFalcon - 8.2.2011, 11:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 8.2.2011, 11:45
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Qxt поставил. Работает.
Окно нахожу, создаю сове где нужно.
Как сделать фильтр этот, на перемещении родительского окна?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 23:18