Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Свое окно под другим.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
RazrFalcon
К примеру открыл тот же видео плеер, не на весь экран.
Мое окно должно помещятся под ним. У меня на 10пикс. с каждой стороны выглядывает.
Сейчас я тут разобрался как получать положение окна.
Затем через setGeometry() ставлю свое окно куда нужно.
Но при переносе оно конечно остается на месте. Если setGeometry запихнуть в while то окно вообще не появляется.
Как сделать чтобы окно мое таскалось вместе с "родительским"?

И нужно что бы окно было всегда под тем окном, под которым оно прячится.
Litkevich Yuriy
Цитата(RazrFalcon @ 7.2.2011, 22:31) *
Если setGeometry запихнуть в while то окно вообще не появляется.
:)

Цитата(RazrFalcon @ 7.2.2011, 22:31) *
Как сделать чтобы окно мое таскалось вместе с "родительским"?
при перемещении "родителя" перемещать и "дочернее".
Вообще можно и без кавычек. Просто указать виджету явно, что он - окно. Удобнее всего использовать фильтр событий.
RazrFalcon
а? я не понял...
Родитель - не мое окно. Это плеер, или вообще что угодно.
Что значит сделать окном "явно"?
Какой фильтр?
Litkevich Yuriy
Примерно так:
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
Цитата(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
Может быть тогда тебе попробовать ловить события с помощью
bool QApplication::x11EventFilter ( XEvent * event ) [virtual]

Либо воспользоватся сторонней разработкой расширяющей Qt -- Qxt.
В частности классом QxtWindowSystem, с помощью него можно найти идентификатор окна и, потенциально, поставить на это окно фильтр событий
RazrFalcon
Судя по всему Qxt - лучший вариант.
Теперь буду пробовать.
Litkevich Yuriy
Цитата(RazrFalcon @ 7.2.2011, 23:49) *
Ссылку на описание какое то можно, пожалуйста?
в документации есть ссылка, на главной странице, ищи
RazrFalcon
Сам виноват...
Разобрался.
RazrFalcon
Qxt поставил. Работает.
Окно нахожу, создаю сове где нужно.
Как сделать фильтр этот, на перемещении родительского окна?
RazrFalcon
Так как сделать перехватчик/фильтр положения чужого окна?
wiz29
Цитата(RazrFalcon @ 11.2.2011, 9:51) *
Так как сделать перехватчик/фильтр положения чужого окна?

Смотри пример в ответе #4, тока вместо MainWindow будет указатель на найденное тобой окно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.