Russian Qt Forum
Ноябрь 23, 2024, 03:42
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Дополнительные компоненты
>
Rotated Label
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Rotated Label (Прочитано 13192 раз)
kirill
Гость
Rotated Label
«
:
Сентябрь 07, 2009, 09:20 »
Компонента RotatedLabel моего авторства.
Код простейший, может кому понадобится, или может кто улучшит и выложит, с антиалиасом у меня не получилось.
Записан
SABROG
Гость
Re: Rotated Label
«
Ответ #1 :
Сентябрь 09, 2009, 12:29 »
Цитата: kirill от Сентябрь 07, 2009, 09:20
с антиалиасом у меня не получилось.
Имхо вполне ощутимая разница
Игра с флагами QPainter::TextAntialiasing, QPainter::SmoothPixmapTransform, QPainter::Antialiasing вообще ничего не дала. А вот font.setStyleStrategy(QFont::PreferAntialias); влияет. Именно этот флаг использует QtCreator в своем редакторе кода.
Записан
kirill
Гость
Re: Rotated Label
«
Ответ #2 :
Сентябрь 09, 2009, 12:37 »
Цитата: SABROG от Сентябрь 09, 2009, 12:29
Игра с флагами QPainter::TextAntialiasing, QPainter::SmoothPixmapTransform, QPainter::Antialiasing вообще ничего не дала. А вот font.setStyleStrategy(QFont::PreferAntialias); влияет. Именно этот флаг использует QtCreator в своем редакторе кода.
Разница то есть, но все равно сглаживание далеко от идеального.
Записан
SABROG
Гость
Re: Rotated Label
«
Ответ #3 :
Сентябрь 09, 2009, 12:56 »
Либо я слепой, либо монитор плохой. Еще поигрался с флагами QFont::PreferQuality, QFont::OpenGLCompatible, QPainter::HighQualityAntialiasing
Ну не вижу разницы никакой.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Rotated Label
«
Ответ #4 :
Сентябрь 09, 2009, 13:08 »
Цитата: kirill от Сентябрь 09, 2009, 12:37
Разница то есть, но все равно сглаживание далеко от идеального.
Чтобы гладить - нужно больше данных. Стандартный подход - в буфере создать текст/изображение в масштабе 4x4 (да, в 16 раз больше) и затем его аккуратно уменьшить (самое простое 1 выходной пиксель = среднее значение матрицы 4x4). Делает ли это Qt - не знаю, но похоже что нет (было бы достаточно много написано). А иначе - ну можно как-то тем же бикубиком подгладить, но "квачества" не получить.
Записан
SABROG
Гость
Re: Rotated Label
«
Ответ #5 :
Сентябрь 09, 2009, 13:33 »
В общем исходные данные такие:
Шрифт: Tahoma, 8, 45°
Открыл Excel. Вписал текст в "Эффектах" рабочего стола сначала выбрал сглаживание шрифтов "Обычное", затем "ClearType". Потом отключил сглаживание вообще и посмотрел на результат Qt. Получилось такое:
Если сравнивать буквы "ro", в Qt оно хотябы просматривается. Скорее всего разница алгоритмов Qt и Excel при повороте текста. При этом флаг QPainter::SmoothPixmapTransform не был выставлен.
«
Последнее редактирование: Сентябрь 09, 2009, 13:37 от SABROG
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Rotated Label
«
Ответ #6 :
Декабрь 09, 2009, 21:50 »
Вечер добрый, господа))
Заинтересовал выш виджеет RotatedLabel, поскольку именно такой крендель нужен в одном проекте...
Выкладываю то что получилось у меня))
Замечу, что проблемы с сглаживанием шрифта полностью отсутствуют, а также, что не маловажно, можно использовать html, как в оригинальном QLabel)) Lf? xnj yt vj;tn yt hfljdfnm))
Snapshot и исходники прилогаются))
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Rotated Label
«
Ответ #7 :
Декабрь 09, 2009, 23:28 »
Так, нашлась одна бага
Подправлена.
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
SABROG
Гость
Re: Rotated Label
«
Ответ #8 :
Декабрь 10, 2009, 01:02 »
Интересный подход. В качестве девайса отрисовки виджета используется QPixmap:
Код
C++ (Qt)
_label.
render
(
&
_pixmap
)
;
А сам QPixmap после любых манипуляций уже отрисовывается в любом другом месте. Подход хорош тем, что весь функционал QLabel остается.
Записан
vanessa
Гость
Re: Rotated Label
«
Ответ #9 :
Февраль 08, 2010, 16:38 »
А как его добавить в QT Designer ?
Записан
BRE
Гость
Re: Rotated Label
«
Ответ #10 :
Февраль 08, 2010, 17:13 »
Цитата: vanessa от Февраль 08, 2010, 16:38
А как его добавить в QT Designer ?
Посмотри в designer на Promote to... (Преобразовать в...)
Записан
vanessa
Гость
Re: Rotated Label
«
Ответ #11 :
Февраль 08, 2010, 18:31 »
Я тут сделал его "по-правильному" заодно и научился делать компоненты для дизайнера.
Записан
vanessa
Гость
Re: Rotated Label
«
Ответ #12 :
Февраль 08, 2010, 21:40 »
Тестировал я эту вещь.
1. пришлось переделать конструктор для класса RotatedLabel
2. обнаружил что при изменении шрифта эти изменения не отображаются на форма, они становятся видны только при переоткрытии формы.
патч к архиву - во вложении
что б еще хотелось: чтоб палитра виджета была как у родителя. установка в конструкторе
_label.setPalette(parent->palette());
что-то так вот сходу не помогла отрисовать его с палитрой родителя. или у родителя палитра изменилась уже после создания виджета
«
Последнее редактирование: Февраль 08, 2010, 23:47 от vanessa
»
Записан
lighting
Гость
Re: Rotated Label
«
Ответ #13 :
Октябрь 03, 2011, 17:03 »
в ходе использования выяснилось что инициализировать пустой строкой "" нежелательно - тогда некорректно возвращаются width() и height(), они устанавливаются в одно значение и после уже не меняются даже если менять текст и вызывать update и adjustsize. В качестве временного решения инициализирую их пробелом " " тогда все ок.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...