Russian Qt Forum
Сентябрь 29, 2024, 12:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: вертикальный текст  (Прочитано 5442 раз)
Eugene Efremov
Гость
« : Декабрь 15, 2008, 18:47 »

Для сабжа мне, что-то, не приходит в голову ничего лучше, чем:
Код
C++ (Qt)
void MyWidget::drawTextV(QPainter *painter, const QPoint& p, const QString& str)
{
QFontMetrics fm(painter->font());
int x = fm.height();
int y = fm.width(str);
 
QPixmap pm(x, y);
pm.fill(QColor(0,0,0,0));
 
QPainter ppm(&pm);
ppm.initFrom(this);
ppm.rotate(90);
ppm.drawText(0,0,str);
ppm.end();
 
painter->drawPixmap(p, pm);
}
 
Грустный

Существует ли в природе менее черезж..ный способ?
Записан
Alex03
Гость
« Ответ #1 : Декабрь 16, 2008, 11:36 »

А чем просто painter->rotate() и painter->drawText() не устраивает?
Записан
Rcus
Гость
« Ответ #2 : Декабрь 16, 2008, 12:09 »

Я не пробовал, но вроде в Qxt есть нужное:
http://doc.libqxt.org/latest/classQxtPushButton.html
Записан
Eugene Efremov
Гость
« Ответ #3 : Декабрь 17, 2008, 13:58 »

Мда... Вот вариант чуть получше:
Код
C++ (Qt)
void MyWidget::drawTextV(QPainter *painter, const QPoint& p, const QString& str)
{
QTransform old = painter->transform();
painter->translate(p);
painter->rotate(90);
painter->drawText(0, 0, str);
painter->setTransform(old);
}
 

Все равно — криво это все. Хочется, чтоб было как-нибудь так:
Код
C++ (Qt)
painter->drawText(p, str, QTransform().rotate(90));
 
Да видно, это только мечты...  В замешательстве
Записан
Detonator
Гость
« Ответ #4 : Декабрь 17, 2008, 14:04 »

Ну сделай глобальную функцию обертку если во многих местах используется.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.329 секунд. Запросов: 21.