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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Размножение ? QLabel  (Прочитано 6167 раз)
Геннадий Пастухов
Гость
« : Ноябрь 15, 2009, 13:22 »

Рисую собственную форму. В верхней части экрана мне нужна бегущая строка хитрого вида (на картинке)http://laul.no-ip.info/topBar.png. Решил сделать QLabel, загрузить в него картинку, а потом уже поверх него расположить виджет с бегущим текстом. Но этот QLabel должен растягиваться и сжиматься по ширине при изменении размеров окна приложения. Для этого в paintEvent главной формы я выставляю новую геометрию для него через setGeometry. И, видимо, что-то делаю не так, потому что вместо изменения размеров при растягивании окна справа появляются его копии. Также, как если картинку на рабочий стол Windows вывести с параметром "Мозаикой". В-общем, вопросов 2:
- Может есть готовое решение для бегущего текста с собственным внешним видом?
- Почему QLabel не растягивается?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 15, 2009, 14:31 »

Используй QLayout для размещения контролов на окне.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Ноябрь 15, 2009, 14:32 »

1) Бегущая строка (насчёт собственного стиля не знаю)
2) он растягивается, а чтобы картинка растягивалась (и уродовалась) нужно использовать свойство scaledContents

П.С. пои дее такие виджеты делают из нескольких картинок, покраям стационарные картинки, а в середине вертикальная шириной, например, в один пиксель и её копируют, тогда картинка не уродуется

Пример смотри тут:
%QTDIR%\demos\shared\images
-button_normal_cap_left.png
-button_normal_cap_right.png
-button_normal_stretch.png
« Последнее редактирование: Ноябрь 15, 2009, 14:36 от lit-uriy » Записан

Юра.
Геннадий Пастухов
Гость
« Ответ #3 : Ноябрь 15, 2009, 14:36 »

Немного почесал репу и сделал по-другому. Раньше устанавливал фон QLabel через стили:
Код:
ui->topBar->setStyleSheet("QLabel#topBar {background-image: url(pics/topBar.png); border: 0px;}");
, теперь сделал через QPixmap, который предварительно также масштабирую под размер QLabel:
Код:
topB = new QPixmap("pics/topBar.png");
ui->topBar->resize(width() - 384, 46);   
ui->topBar->setPixmap(topB->scaled(ui->topBar->width(), 46));

Или это неправильное решение?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Ноябрь 15, 2009, 14:36 »

я свой пост обновил
Записан

Юра.
Геннадий Пастухов
Гость
« Ответ #5 : Ноябрь 15, 2009, 14:39 »

1) Бегущая строка (насчёт собственного стиля не знаю)

Огромнищее спасибище!!!!

2) он растягивается, а чтобы картинка растягивалась (и уродовалась) нужно использовать свойство scaledContents

П.С. пои дее такие виджеты делают из нескольких картинок, покраям стационарные картинки, а в середине вертикальная шириной, например, в один пиксель и её копируют, тогда картинка не уродуется

Пока это пилотный проект, не страшно, в рабочей версии думаю для таких картинок использовать SVG.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Ноябрь 15, 2009, 16:43 »

>>думаю для таких картинок использовать SVG.
рендеринг SVG, я думаю, будет медленнее копирования растрового рисунка
Записан

Юра.
Геннадий Пастухов
Гость
« Ответ #7 : Ноябрь 15, 2009, 17:31 »

>>думаю для таких картинок использовать SVG.
рендеринг SVG, я думаю, будет медленнее копирования растрового рисунка

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


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