Russian Qt Forum
Мая 24, 2025, 23:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Разные разрешения монитора  (Прочитано 6635 раз)
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« : Мая 28, 2012, 13:41 »

Добрый день. У меня вопрос следующего содержания.
Есть форма, на ней есть QLabel, QWebView, QPushButtons, QGroupBox, QWidget. Изначально все это отрисова с фиксированными размерами под общий размер 1024*768. Естественно, на мониторах с меньшим разрешением(или если запускать в ОС с VirtualBox) все налазит друг на друга/не влезает в экран.
Вопрос: как адаптировать приложение для разных разрешений, в какую сторону копать? QSizePolicy выставить я так понимаю.
И самый главный вопрос, что-то решение в голову пока не приходит. Есть кнопка, ее фоновую картинку задаю setStyleSheet(), две картинки, когда обычная и :pressed. И размеры будут меняться кнопки, следовательно нужно менять размеры картинки фона. Пробовал через setIcon(), вроде бы ничего, но а как задать изображение для :pressed?

п.с. похожих тем не нашел. или плохо искал, тогда прошу тыкнуть носом)
заранее спасибо
« Последнее редактирование: Мая 30, 2012, 08:35 от torwig » Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Мая 28, 2012, 13:45 »

Изучай лайауты. Попробуй в дизайнере с ними поиграться.

А для натягивания картинок на кнопки style sheets тебе подойдут, там можно задать отдельные картинки для рисования рамки, фона. Также можно задать правила отрисовки фона (плиткой, растягивать...)
Записан

Гугль в помощь
soiam
Гость
« Ответ #2 : Мая 28, 2012, 14:42 »

Цитировать
И самый главный вопрос, что-то решение в голову пока не приходит. Есть кнопка, ее фоновую картинку задаю setStyleSheet(), две картинки, когда обычная и :pressed. И размеры будут меняться кнопки, следовательно нужно менять размеры картинки фона. Пробовал через setIcon(), вроде бы ничего, но а как задать изображение для :pressed?
как-то так
Код:
connect(button,SIGNAL(toggled(bool)),this,SLOT(button_pressed(bool)));

void MainForm::button_pressed(bool value)
{
 if (value)
   button -> setIcon(xxxx);
 else
   button -> setIcon(yyyy);
}
« Последнее редактирование: Мая 28, 2012, 14:44 от soiam » Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #3 : Мая 28, 2012, 14:58 »

Спасибо,  soiam, иконка отображается.
А чтобы иконка изменялась вместе с размером кнопки, все манипуляции с этой иконкой нужно проводить в resizeEvent()?
Записан
soiam
Гость
« Ответ #4 : Мая 28, 2012, 15:10 »

Да, я бы наверное в resizeEvent вставил бы бы setIconSize
Записан
Bepec
Гость
« Ответ #5 : Мая 28, 2012, 16:05 »

Эммм... а может стайлшитом? Гораздо удобнее и быстрее получается, не?
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #6 : Мая 28, 2012, 16:13 »

Так сейчас и есть стайлшитом. Размер изображения ведь нужно менять, иначе просто урезается, если например кнопка становится 50*50, а фоновое изображение 100*100. И что-то setIconSize() не рабоатет, или неверно использую
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #7 : Мая 28, 2012, 16:21 »

Не понятно. Тебе нужно иконку менять или внешний вид всей кнопки? Если ты пытаешься иконкой перекрыть всю кнопку - то это кривой метод, лучше через style sheet.
Записан

Гугль в помощь
Bepec
Гость
« Ответ #8 : Мая 28, 2012, 16:41 »

Стайлшит это CSS. Каскадные таблицы стилей, независимые от твоего кода.

А то, что вы сейчас делаете - попытка сделать свой велосипед.

Возможно я неправ.
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #9 : Мая 28, 2012, 17:16 »

Да, так сейчас и идет через каскадые таблицы. Но если кнопка 100*100, картинка 100*100, устанавливает бэкграунд-имэйдж и вуаля. А если размер кнопки уменьшается, то картинка урезается. Смотрел background-size, но на него ругается Qt.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #10 : Мая 29, 2012, 09:50 »

border-image: url(skin:background.png) stretch stretch;
Записан

Гугль в помощь
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #11 : Мая 30, 2012, 08:34 »

Большое спасибо, navrocky. Работает.
Именно то, что я искал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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