Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: iddqd от Ноябрь 16, 2011, 08:23



Название: Отрисовка интерфейса в окне X11lib
Отправлено: iddqd от Ноябрь 16, 2011, 08:23
Нужно создать окно X11 и в идеале расположить на нём QGraphicsScene, но для начала хотя бы просто отрисовывать на нём QPixmap и обрабатывать события (перерисовка и нажатия мышки).
Окно создаётся через XCreateWindow() в конструкторе класса, который унаследован от QApplication. И уже вот тут не совсем понятно как при этом реализовать обработку событий от этого окна, чтобы события попадали на обработку в переопределённый x11EventFilter(). Затем, как я понимаю можно через QPixmap::fromX11Pixmap() получить изображение созданного окна и рисовать на нём с помощью QPainter'a.
Но вот собрать всё это вместе в один рабочий пример пока, к сожалению, не получается...


Название: Re: Отрисовка интерфейса в окне X11lib
Отправлено: GreatSnake от Ноябрь 16, 2011, 08:37
Окно создаётся через XCreateWindow() в конструкторе класса, который унаследован от QApplication.
Top-level QWidget точно также создаётся через XCreateWindow(). Объясните зачем нужет такой изврат?


Название: Re: Отрисовка интерфейса в окне X11lib
Отправлено: iddqd от Ноябрь 16, 2011, 08:51
Есть такой момент, что при использовании любого QWidget'a система по-умолчанию растягивает окно на весь экран, даже если я явно задаю расположение и размеры. Поэтому то и приходится делать такой велосипед, так как при проверке получилось создать X11 окно, которое не растягивается системой. Но только как теперь правильно смешать код создания окна через x11lib и сделать обработку событий через qt код не понятно. А в чистом коде на x11lib цикл обработки событий реализуется как бесконечный цикл for (;;) {...}, что соответственно блокирует всё остальное.


Название: Re: Отрисовка интерфейса в окне X11lib
Отправлено: GreatSnake от Ноябрь 16, 2011, 09:43
Есть такой момент, что при использовании любого QWidget'a система по-умолчанию растягивает окно на весь экран, даже если я явно задаю расположение и размеры. Поэтому то и приходится делать такой велосипед, так как при проверке получилось создать X11 окно, которое не растягивается системой.
Бред какой-то.
Какая платформа? Менеджер окон?
Как задавали геометрию?


Название: Re: Отрисовка интерфейса в окне X11lib
Отправлено: iddqd от Ноябрь 16, 2011, 09:53
MeeGo Harmattan.
WM там какой-то собственный, композитный. как точнее узнать не в курсе.
Геометрию задавал так:
Код:
    QGraphicsScene scene;
    scene.setSceneRect(10,10,100,100);
    scene.addText("Hello, world!");


Название: Re: Отрисовка интерфейса в окне X11lib
Отправлено: illusionoflife от Ноябрь 24, 2011, 22:48
Что за бред? QGraphicsScene не виджет. Это логическая структура, не более.
Отсюда рискну предположить, что вы хотите использовать QGraphicsView::QWidget::resize;



Название: Re: Отрисовка интерфейса в окне X11lib
Отправлено: iddqd от Ноябрь 24, 2011, 23:05
Для начала нужно хотя бы просто создать окно и отрисовывать на нём, скажем, QPixmap и обрабатывать события (перерисовка и нажатия мышки)...