![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Rocky |
![]()
Сообщение
#1
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет!
вот тут http://www.forum.crossplatform.ru/index.php?showtopic=4154 Litkevich Yuriy выложил пример AeroButton. В программе сделал кнопки примерно также. Но чтука в том что под виндой эти кнопки получаются с идеально на мой взгляд ровными обводами засчет антиалайзинга.. А вот под линуксом они ужасны. Вычитал, что в иксах нужно для достижения такого же результат включить какую-то опцию отрисовки. Но есть универсальный способ: рисование на QImage (т.е. как бы использование его движка, а не "движка" ОС). Вот делаю как в книге написано =)
Кнопки рисуются, причем прозрачные... но вот по краям виден белый прямоугольный фон. Вот пример: ![]() Как это можно победить? Пробовал играться с QPainter::CompositionMode, максимально только к этому беломы фону прозрачность добавляется....но сам он не исчезает естественно... Спасибо! |
|
|
![]() |
Rocky |
![]()
Сообщение
#2
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Да, насчет отрисовки завтра переделаю... Весь день буду оптимизацией заниматься... Хотя стоп... Litkevich Yuriy можно задам вопрос, который давно меня мучает... Вроде как он касается этого. Если в конструкторе класса формировать пусть тот же QImage, то как? В смысле если мы находимся внутри самого конструктора класса, то его объект еще не создан. И тем более не отображен на экране. Как тогда получить правильные размеры всех виджетов и пр? Я щас так делаю: просто в main-е после того, как вызвал exec(...) или show(...) главного окна, вызываю некий метод Initialize(...) который по сути далее вызывается иерархически по вссем потомкам главного виджета (окна).. Но как-то не очень нравится этот способ... Может можно как-то лучше?
Вобщем щас вот так в линуксе выглядит: ![]() Завтра на работе сделаю скрин как с этим же кодом в XP. --------------------------------------- Вот так выглядит картинка в винде ![]() Сообщение отредактировал Rocky - 5.2.2010, 9:02 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 5:23 |