Выделение области и курсор мыши, как поправить? |
Здравствуйте, гость ( Вход | Регистрация )
Выделение области и курсор мыши, как поправить? |
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 |
пардон, может я и не в туму, но 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 |
а в манувле есть предупреждение: Цитата 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 |
можешь описать как визуально выглядит процесс выделения, курсор гдето находится -> нажимаешь левую кнопку (что происходит с курсром при этом) -> двигаешь курсор -> появляется прямоугольная область (что происходит с курсром при этом) -> отпускаешь кнопку (что происходит с курсром при этом) Тут вот в чем фишка: при нажатии кнопки, курсор превращается в крестик! Далее, при небольших движениях появляется эта рамка. НО: там где курсор находится правый конец рамки, а левая сторона рамки ровно на таком расстоянии, которое находится между правой стороной рамки и крестиком мыши на первом рисунке! |
|
|
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 |
|
|
|
AD |
28.3.2008, 16:10
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
С курсором беда. Сделано точно также как и в примерах Qt. Но что-то работает так, как я описал. globalPos() - не помогает (вообще из др. области). Что все-таки можно сделать?
|
|
|
Текстовая версия | Сейчас: 28.12.2024, 9:25 |