![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Короче такая проблемка.
[attachment=38:test_pics.GIF] Как заставить приложение при выделении области курсор мыши быть там где и надлежит? В данном случае в правом нижнем углу. Использую класс QRubberBand. Вторая проблемка та, что цвет выделенной области полупрозрачный, а не полностью прозрачный. Хотя строчку rubber -> setWindowOpacity(0.0); написал. Как избавиться от этих проблемок? |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
пардон, может я и не в туму, но Opacity - полупрозрачность, а transparency - прозрачность, посему попробуй соответствующее свойство поискать
|
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
пардон, может я и не в туму, но 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 |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
а в манувле есть предупреждение:
Цитата 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 |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
а в манувле есть предупреждение: Цитата 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 |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата А как сделать то, чтобы маркер курсора и сам рамка были в одном месте? Это первый вопрос в первом посту? а когда ты начинаеш выделение, он у тебя в начале выделения? я не пойму как он у тебя вдругом месте оказался |
|
|
AD |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
можешь описать как визуально выглядит процесс выделения, курсор гдето находится -> нажимаешь левую кнопку (что происходит с курсром при этом) -> двигаешь курсор -> появляется прямоугольная область (что происходит с курсром при этом) -> отпускаешь кнопку (что происходит с курсром при этом) Тут вот в чем фишка: при нажатии кнопки, курсор превращается в крестик! Далее, при небольших движениях появляется эта рамка. НО: там где курсор находится правый конец рамки, а левая сторона рамки ровно на таком расстоянии, которое находится между правой стороной рамки и крестиком мыши на первом рисунке! |
|
|
flankerr |
![]()
Сообщение
#8
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
вместо
event->x() \ event->y() используй event->globalPos() |
|
|
AD |
![]()
Сообщение
#9
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#10
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
С курсором беда. Сделано точно также как и в примерах Qt. Но что-то работает так, как я описал. globalPos() - не помогает (вообще из др. области). Что все-таки можно сделать?
|
|
|
ViGOur |
![]()
Сообщение
#11
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Прошу простить! Посмотрел пример и увидел, что там также выделяется, как и у меня. Этот синеватый оттенок появляется если использовать в Windows со стилем XP, а не стандартный стиль! Может все дело в том, что Windows со стилем XP не совсем корректно обрабатывается?
|
|
|
AD |
![]()
Сообщение
#12
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Прошу простить! Посмотрел пример и увидел, что там также выделяется, как и у меня. Этот синеватый оттенок появляется если использовать в Windows со стилем XP, а не стандартный стиль! Может все дело в том, что Windows со стилем XP не совсем корректно обрабатывается?Да фиг с этим синеватым оттенком. Это ерунда. Там проблема более неприятная есть. Это некорректное выделение. |
|
|
ViGOur |
![]()
Сообщение
#13
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Можешь дать проект, в котором воспроизводится данная проблема?
Чтобы не гадать. |
|
|
AD |
![]()
Сообщение
#14
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Можешь дать проект, в котором воспроизводится данная проблема? Чтобы не гадать. Пожалуйста! ![]() В другом - исходные файлы. собрать не пытайся, используется помимо Qt, библиотека внутреннего пользования! Исполняемый файл не удалось подгрузить, потому что размер архива д.б. очень маленьким! |
|
|
ViGOur |
![]()
Сообщение
#15
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Да нет, можешь собрать проектик, в котором будет воспроизводится твоя проблема.
И чтобы я мог посмотреть, или кто другой что там не так, да и чтобы ты сам мог потерзать его не затрагивая общий проект... ![]() p.s. мне просто наглядность нужна. |
|
|
AD |
![]()
Сообщение
#16
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Да нет, можешь собрать проектик, в котором будет воспроизводится твоя проблема. И чтобы я мог посмотреть, или кто другой что там не так, да и чтобы ты сам мог потерзать его не затрагивая общий проект... ![]() p.s. мне просто наглядность нужна. Упс. Последние потуги оказались ненапрасными. Проблема решена. Дело вот в чем: за отрисовку этой ленты отвечают 3 функции: void mousePressEvent(QMouseEvent* events); void mouseReleaseEvent(QMouseEvent* events); void mouseMoveEvent(QMouseEvent* events); У меня функция mouseMoveEvent была не в окне главной программы, а для отдельного элемента. И скорее всего правильную синхронизацию этой ленты с этим элементом не удавалось наладить (разные нули координат и т.п.) Если все 3 функции реализовывать в одном классе, проблем подобных не будет. |
|
|
ViGOur |
![]()
Сообщение
#17
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Вот что значит отдельный разбор...
![]() |
|
|
AD |
![]()
Сообщение
#18
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата [attachment=38:test_pics.GIF] Еще несколько вопросов по поводу этой картинки: 1) как сделать так, чтобы панель инструментов не была растянута по все длине, а была ровно столько, чтобы в ней уместились все картинки-кнопки? 2) как заставить панель инструментов воспринимать какой-нибудь цвет у bitmap как прозрачный? (P.S. В Борланде это возможно!) |
|
|
Litkevich Yuriy |
![]()
Сообщение
#19
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
по 2п.
В борланде это единственный путь сделать прозрачность, и весьма неудобный и карявый, лучше подготовь нужный рисунок, можно в GIMP'е свести цвет. Я сильно порадовался когда узнал, что Qt честно поддерживает прозрачность. Хотя может Qt'я и позволяют делать такой трюк. |
|
|
AD |
![]()
Сообщение
#20
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
по 2п. В борланде это единственный путь сделать прозрачность, и весьма неудобный и карявый, лучше подготовь нужный рисунок, можно в GIMP'е свести цвет. Я сильно порадовался когда узнал, что Qt честно поддерживает прозрачность. Хотя может Qt'я и позволяют делать такой трюк. Хорошо, а как это сделать по честному? Т.е. как свести цвет? И просто прикрепить картинку? |
|
|
AD |
![]()
Сообщение
#21
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
А что сделать с панелью инструментов-то? Ну.... чтобы картинки были рядом друг с другом, а не растянуты по ширине?
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#22
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата 2) как заставить панель инструментов воспринимать какой-нибудь цвет у bitmap как прозрачный? у класса QPixmap, есть метод createHeuristicMask(), изучи его, берутся пиксели четырех(!) углов, и цвет их устанавливается прозрачным. Также в описании этого метода есть ссылки на подобные методы, по эксперементаруй, посмотри, что тебе больше подходит. Сообщение отредактировал Litkevich Yuriy - 4.4.2008, 5:24 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 17.7.2025, 21:03 |