crossplatform.ru

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

Гость_Andrey_*
сообщение 24.11.2010, 1:09
Сообщение #1





Гости








    


Есть такая проблема. Внедрил main form qt приложения в vcl mdi форму сишного приложения средствами Win API. Все отлично внедрилось, отрисовка работает, клавиатурные события обрабатываются, но мышь...
Вобщем qt форма продолжает использовать глобальные координаты вместо локальных. При этом весьма странное дело, какие то виджеты используют локальные координаты и ведут себя нормально, а какие глобальные и гонят...
Че токо не пробовал со стороны сишного приложения чтобы исправить дело (средствами winapi), но ниче не помогает.
Видимо придется менять в qt части (код доступен), вот только с чего начать не знаю.
Какие будут предложения коллеги :)

Забегая вперед скажу что пенести все в одну среду пока не вариант. Каждая составляющая 10000яч строк кода и написана разными людьми, так что пока нет возможности собрать все в кучу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 24.11.2010, 8:03
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(Гость_Andrey_* @ 24.11.2010, 3:09) *
какие то виджеты используют локальные координаты и ведут себя нормально, а какие глобальные и гонят...

а зависимость улавливается ? Или это всё случайно происходит. И как узнал, что координаты используются глобальные ? Может быть, ты просто пересчитываешь в самом виджете их некорректно

Сообщение отредактировал Алексей1153 - 24.11.2010, 8:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Andrey_*
сообщение 24.11.2010, 11:15
Сообщение #3





Гости








    


Цитата(Алексей1153 @ 24.11.2010, 8:03) *
Цитата(Гость_Andrey_* @ 24.11.2010, 3:09) *
какие то виджеты используют локальные координаты и ведут себя нормально, а какие глобальные и гонят...

а зависимость улавливается ? Или это всё случайно происходит. И как узнал, что координаты используются глобальные ? Может быть, ты просто пересчитываешь в самом виджете их некорректно


Есть такая зависимость. Объекты которые лежат на floating window (прицепленное к форме qt) обрабатываются некокрректно. Сцена вроде работает. Есть еще splitter тоже работает корректно. Видимо закономерность есть.
А узнал просто окно qt прицеплено к mdi форме моего приложения. координаты 0,0. Соотвественно если пододвинуть mdi окно к глобальный x=0 и y смещенный на ширину заголовка main window+menu+заголовок mdi window то в списке дереве выбирается элемент смещенный на этот глобальный y, а не тот что под мышью. Те такое чувство что глобальные координаты не пересчитываются в локальные. В некоторых виджетах действительно некоретно мной считается("самопальные"), те корректно если предполагать что qt window overllaped а не child. но события клика на стандартных виджетах обрабатываются qt а не мной.
курил qtwincontrol там тот же winapi и тотже setparent. есть конечно еще хуки на системные события типа tab и выход на системное меню, но это уже другой вопрос. единственное что форма qt после создания сразу определябтся как child и только потом крепяться виджеты, а у меня уже после всего конструктора.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.6.2025, 6:29