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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка интерфейса в окне X11lib  (Прочитано 3330 раз)
iddqd
Гость
« : Ноябрь 16, 2011, 08:23 »

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

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Ноябрь 16, 2011, 08:37 »

Окно создаётся через XCreateWindow() в конструкторе класса, который унаследован от QApplication.
Top-level QWidget точно также создаётся через XCreateWindow(). Объясните зачем нужет такой изврат?
Записан

Qt 5.11/4.8.7 (X11/Win)
iddqd
Гость
« Ответ #2 : Ноябрь 16, 2011, 08:51 »

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

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Ноябрь 16, 2011, 09:43 »

Есть такой момент, что при использовании любого QWidget'a система по-умолчанию растягивает окно на весь экран, даже если я явно задаю расположение и размеры. Поэтому то и приходится делать такой велосипед, так как при проверке получилось создать X11 окно, которое не растягивается системой.
Бред какой-то.
Какая платформа? Менеджер окон?
Как задавали геометрию?
Записан

Qt 5.11/4.8.7 (X11/Win)
iddqd
Гость
« Ответ #4 : Ноябрь 16, 2011, 09:53 »

MeeGo Harmattan.
WM там какой-то собственный, композитный. как точнее узнать не в курсе.
Геометрию задавал так:
Код:
    QGraphicsScene scene;
    scene.setSceneRect(10,10,100,100);
    scene.addText("Hello, world!");
Записан
illusionoflife
Гость
« Ответ #5 : Ноябрь 24, 2011, 22:48 »

Что за бред? QGraphicsScene не виджет. Это логическая структура, не более.
Отсюда рискну предположить, что вы хотите использовать QGraphicsView::QWidget::resize;

Записан
iddqd
Гость
« Ответ #6 : Ноябрь 24, 2011, 23:05 »

Для начала нужно хотя бы просто создать окно и отрисовывать на нём, скажем, QPixmap и обрабатывать события (перерисовка и нажатия мышки)...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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