Название: [РЕШЕНО] Разные разрешения монитора Отправлено: torwig от Мая 28, 2012, 13:41 Добрый день. У меня вопрос следующего содержания.
Есть форма, на ней есть QLabel, QWebView, QPushButtons, QGroupBox, QWidget. Изначально все это отрисова с фиксированными размерами под общий размер 1024*768. Естественно, на мониторах с меньшим разрешением(или если запускать в ОС с VirtualBox) все налазит друг на друга/не влезает в экран. Вопрос: как адаптировать приложение для разных разрешений, в какую сторону копать? QSizePolicy выставить я так понимаю. И самый главный вопрос, что-то решение в голову пока не приходит. Есть кнопка, ее фоновую картинку задаю setStyleSheet(), две картинки, когда обычная и :pressed. И размеры будут меняться кнопки, следовательно нужно менять размеры картинки фона. Пробовал через setIcon(), вроде бы ничего, но а как задать изображение для :pressed? п.с. похожих тем не нашел. или плохо искал, тогда прошу тыкнуть носом) заранее спасибо Название: Re: Разные разрешения монитора Отправлено: navrocky от Мая 28, 2012, 13:45 Изучай лайауты. Попробуй в дизайнере с ними поиграться.
А для натягивания картинок на кнопки style sheets тебе подойдут, там можно задать отдельные картинки для рисования рамки, фона. Также можно задать правила отрисовки фона (плиткой, растягивать...) Название: Re: Разные разрешения монитора Отправлено: soiam от Мая 28, 2012, 14:42 Цитировать И самый главный вопрос, что-то решение в голову пока не приходит. Есть кнопка, ее фоновую картинку задаю setStyleSheet(), две картинки, когда обычная и :pressed. И размеры будут меняться кнопки, следовательно нужно менять размеры картинки фона. Пробовал через setIcon(), вроде бы ничего, но а как задать изображение для :pressed? как-то такКод: connect(button,SIGNAL(toggled(bool)),this,SLOT(button_pressed(bool))); Название: Re: Разные разрешения монитора Отправлено: torwig от Мая 28, 2012, 14:58 Спасибо, soiam, иконка отображается.
А чтобы иконка изменялась вместе с размером кнопки, все манипуляции с этой иконкой нужно проводить в resizeEvent()? Название: Re: Разные разрешения монитора Отправлено: soiam от Мая 28, 2012, 15:10 Да, я бы наверное в resizeEvent вставил бы бы setIconSize
Название: Re: Разные разрешения монитора Отправлено: Bepec от Мая 28, 2012, 16:05 Эммм... а может стайлшитом? Гораздо удобнее и быстрее получается, не?
Название: Re: Разные разрешения монитора Отправлено: torwig от Мая 28, 2012, 16:13 Так сейчас и есть стайлшитом. Размер изображения ведь нужно менять, иначе просто урезается, если например кнопка становится 50*50, а фоновое изображение 100*100. И что-то setIconSize() не рабоатет, или неверно использую
Название: Re: Разные разрешения монитора Отправлено: navrocky от Мая 28, 2012, 16:21 Не понятно. Тебе нужно иконку менять или внешний вид всей кнопки? Если ты пытаешься иконкой перекрыть всю кнопку - то это кривой метод, лучше через style sheet.
Название: Re: Разные разрешения монитора Отправлено: Bepec от Мая 28, 2012, 16:41 Стайлшит это CSS. Каскадные таблицы стилей, независимые от твоего кода.
А то, что вы сейчас делаете - попытка сделать свой велосипед. Возможно я неправ. Название: Re: Разные разрешения монитора Отправлено: torwig от Мая 28, 2012, 17:16 Да, так сейчас и идет через каскадые таблицы. Но если кнопка 100*100, картинка 100*100, устанавливает бэкграунд-имэйдж и вуаля. А если размер кнопки уменьшается, то картинка урезается. Смотрел background-size, но на него ругается Qt.
Название: Re: Разные разрешения монитора Отправлено: navrocky от Мая 29, 2012, 09:50 border-image: url(skin:background.png) stretch stretch;
Название: Re: Разные разрешения монитора Отправлено: torwig от Мая 30, 2012, 08:34 Большое спасибо, navrocky. Работает.
Именно то, что я искал. |