crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Выделение области и курсор мыши, как поправить?
AD
  опции профиля:
сообщение 19.3.2008, 12:17
Сообщение #1


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Короче такая проблемка.
[attachment=38:test_pics.GIF]
Как заставить приложение при выделении области курсор мыши быть там где и надлежит? В данном случае в правом нижнем углу.
Использую класс QRubberBand.
Вторая проблемка та, что цвет выделенной области полупрозрачный, а не полностью прозрачный. Хотя строчку rubber -> setWindowOpacity(0.0); написал. Как избавиться от этих проблемок?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.3.2008, 13:00
Сообщение #2


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

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

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




Репутация:   94  


пардон, может я и не в туму, но Opacity - полупрозрачность, а transparency - прозрачность, посему попробуй соответствующее свойство поискать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 19.3.2008, 13:15
Сообщение #3


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 19.3.2008, 13:00) *
пардон, может я и не в туму, но Opacity - полупрозрачность, а transparency - прозрачность, посему попробуй соответствующее свойство поискать

Не хочется делать свою собственную "резиновую ленту", а хочется использовать QRubberBand!
А про свойство сказано:
Цитата
windowOpacity : double
This property holds the level of opacity for the window.
The valid range of opacity is from 1.0 (completely opaque) to 0.0 (completely transparent).
By default the value of this property is 1.0.
This feature is available on Mac OS X, X11 platforms that support the Composite extension, and Windows 2000 and later.
Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.3.2008, 14:05
Сообщение #4


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

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

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




Репутация:   94  


а в манувле есть предупреждение:
Цитата
Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantly slower than opaque windows.

в Qt'ях есть такой пример:
%QTDIR%\examples\itemviews\chart\
там круговую диаграмму можно выделять, все прозрачно, используется QRubberBand, глянь его.

Прикрепленное изображение


Сообщение отредактировал Litkevich Yuriy - 19.3.2008, 14:10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 19.3.2008, 14:42
Сообщение #5


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 19.3.2008, 14:05) *
а в манувле есть предупреждение:
Цитата
Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantly slower than opaque windows.

в Qt'ях есть такой пример:
%QTDIR%\examples\itemviews\chart\
там круговую диаграмму можно выделять, все прозрачно, используется QRubberBand, глянь его.

Прикрепленное изображение


Прошу простить! Посмотрел пример и увидел, что там также выделяется, как и у меня. Этот синеватый оттенок появляется если использовать в Windows со стилем XP, а не стандартный стиль!
[attachment=40:test_pics1.GIF]
А как сделать то, чтобы маркер курсора и сам рамка были в одном месте? Это первый вопрос в первом посту?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.3.2008, 15:10
Сообщение #6


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

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

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




Репутация:   94  


Цитата
А как сделать то, чтобы маркер курсора и сам рамка были в одном месте? Это первый вопрос в первом посту?

а когда ты начинаеш выделение, он у тебя в начале выделения?
я не пойму как он у тебя вдругом месте оказался
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 19.3.2008, 16:27
Сообщение #7


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 19.3.2008, 15:10) *
можешь описать как визуально выглядит процесс выделения, курсор гдето находится -> нажимаешь левую кнопку (что происходит с курсром при этом) -> двигаешь курсор -> появляется прямоугольная область (что происходит с курсром при этом) -> отпускаешь кнопку (что происходит с курсром при этом)

Тут вот в чем фишка: при нажатии кнопки, курсор превращается в крестик! Далее, при небольших движениях появляется эта рамка. НО: там где курсор находится правый конец рамки, а левая сторона рамки ровно на таком расстоянии, которое находится между правой стороной рамки и крестиком мыши на первом рисунке!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 20.3.2008, 12:46
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

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




Репутация:   0  


вместо
event->x() \ event->y()

используй

event->globalPos()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.3.2008, 20:57
Сообщение #9


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(flankerr @ 20.3.2008, 12:46) *
вместо
event->x() \ event->y()

используй

event->globalPos()

Хорошо, спасибо, попробую. Как освобожусь от текущей работы в Builder! (Ненавижу билдер!!!)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 28.3.2008, 16:10
Сообщение #10


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


С курсором беда. Сделано точно также как и в примерах Qt. Но что-то работает так, как я описал. globalPos() - не помогает (вообще из др. области). Что все-таки можно сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.12.2024, 9:43