Название: SetBackgroundPixmap Отправлено: break от Декабря 25, 2007, 03:11 что правильно использовать вместо SetBackgroundPixmap, в QT4 для установки растровой картинки в качестве фона произвольного виджета
если есть: QWidget someWidget(); что с ним необходимо сделать? Заранее спасибо!!! Название: Re: SetBackgroundPixmap Отправлено: Alex03 от Декабря 25, 2007, 07:34 не знаю что есть правильно, но можно например так:
Цитировать QPalette pal = palette(); pal.setBrush(QPalette::Window, QBrush(QPixmap( ":/images/background.png"))); setPalette(pal); Название: Re: SetBackgroundPixmap Отправлено: break от Декабря 25, 2007, 09:20 {
Спасибо; Огромное; } потратил 2 часа пока искал надо было сразу спросить... Название: Re: SetBackgroundPixmap Отправлено: Dodge от Декабря 25, 2007, 15:29 можно еще через css задать.
примерно так: Код: ... Название: Re: SetBackgroundPixmap Отправлено: break от Декабря 29, 2007, 14:52 А можно ли фон (картинку) для формы в Дизайнере установить?
Название: Re: SetBackgroundPixmap Отправлено: Dodge от Января 05, 2008, 03:51 В дизайнере... ммм
По моиму нет, вообще дизайнер умеет генерить файлы - ресурсов, так что если нет в стандартных виджетах, можно написать затычку ;D Название: Re: SetBackgroundPixmap Отправлено: break от Января 07, 2008, 23:48 Что за затычку, причем тут ресурсы?
Смысл прост - есть прибор - на нем куча кнопок, надо сделать копию этого прибора (прибор из реальной жизни - скажем калькулятор к примеру, а сделать окошко кот. распахнуто на ввесь экрани полностью повторяет внешне этот калькулятор), поэтому удобно на этапе разработки, а в нек. случаях и в конечной версии проги использовать фото этого прибора, --- чтобы правильно расставить кнопки. По тех. заданию мне надо сделать максимально прибл. копию нескольких таких приборов. Поэтому подложка нужна в дизайнере - на оффиц. форуме QT обсуждал эту тему и нашел 1 решение(оно не особо удобное но работает) - приведу его на англ. т.к. не охото заново описывать его на русском: I found 1 solution: use in StyleSheets Absolute name of my picture (QT Designer show picture), but before end link project use normal names from resource (:/images/...) it work with QFrame, QFrame { /* background-image: url(:/images/Saut_1280x1024.jpg);*/ /* comment normal image name */ background-image: url(/home/bboy/Projects/C++/Progs/TrainDevices/MansSautPanel/images/Saut_12 80x1024.jpg); } and others QFrame (in my QFrame) - i set to empty StyleSheet, becouse i want only one background QFrame { background-image: url(); } I use one Frame on VBoxLayout for Background, and other Widgets put on it. Название: Re: SetBackgroundPixmap Отправлено: Dodge от Января 08, 2008, 18:02 затычка - это plugin
А ресурсы тут при том, что вашу картинку нужно будет гдето хранить, в qt контент принято хранить в файлах ресурсов. А пример с использованием таблицы стилей я вам уже приводил выше. Название: Re: SetBackgroundPixmap Отправлено: break от Января 09, 2008, 14:03 С помощью ресурсов увидеть картинку в дизайнере нельзя!!!
В этом то вся и проблема, за пример со стилями спасибо, я его и использовал для решения, но в качестве пути на этапе разработки использую абсолютный путь к файлу, а не путь к ресурсу (это видно в коде выше). Потом абсолютный путь приходится менять на путь с ресурсом (уже при конечной линковке программы). В этом то и неудобство (временами забываю подменить все пути и получается что на другой машине естественно картинки нет - т.к. указан абсолютный путь несущ. файла). Кроме того неудобно использовать стили т.к. у всех дочерних QFrame та же картинка из-за наследования стиля пытается быть фоном. приходится для всех компонентов наследников QFrame делать доп. определение стиля с пустым фоном (тоже все в коде выше есть). А у меня внутри много таких компонентов QLabel, LCDNumber и т.д. Вот виджет написать можно, который будет контейнером и умел бы фон показывать (это несложно, может я когда нибудь так и сделаю, просто сейчас не хочется время тратить раз уж заработало в дизайнере со стилями). Хотя странно что для такой простой цели надо свой виджет делать... Может еще решения есть? Название: Re: SetBackgroundPixmap Отправлено: Dodge от Января 10, 2008, 13:27 Кроме того неудобно использовать стили т.к. у всех дочерних QFrame та же картинка из-за наследования стиля пытается быть фоном. приходится для всех компонентов наследников QFrame делать доп. определение стиля с пустым фоном (тоже все в коде выше есть). А у меня внутри много таких компонентов QLabel, LCDNumber и т.д. Попрбуй задать имя целевому виджет( например setObjectName( "myWidget_9321" ) ), а стиль для него задать так:Код: MyWidgetClass#myWidget_9321 { Название: Re: SetBackgroundPixmap Отправлено: break от Января 11, 2008, 03:30 да спасибо, это уже положительный момент!
|