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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: SetBackgroundPixmap  (Прочитано 7218 раз)
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« : Декабря 25, 2007, 03:11 »

что правильно использовать вместо SetBackgroundPixmap, в QT4 для установки растровой картинки в качестве фона произвольного виджета
если есть:

QWidget someWidget();

что с ним необходимо сделать?

Заранее спасибо!!!
Записан
Alex03
Гость
« Ответ #1 : Декабря 25, 2007, 07:34 »

не знаю что есть правильно, но можно например так:
Цитировать
    QPalette pal = palette();
    pal.setBrush(QPalette::Window, QBrush(QPixmap( ":/images/background.png")));
    setPalette(pal);
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Декабря 25, 2007, 09:20 »

{
Спасибо;
Огромное;
}

потратил 2 часа пока искал надо было сразу спросить...
Записан
Dodge
Гость
« Ответ #3 : Декабря 25, 2007, 15:29 »

можно еще через css задать.
примерно так:
Код:
...
MyWidget w;
QString myStyle =
    "MyWidget {\n"
    "    background-image: url( "myimage.png" );\n"
    "}\n";
w.setStyleSheet( myStyle );
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #4 : Декабря 29, 2007, 14:52 »

А можно ли фон (картинку) для формы в Дизайнере установить?
Записан
Dodge
Гость
« Ответ #5 : Января 05, 2008, 03:51 »

В дизайнере... ммм
По моиму нет, вообще дизайнер умеет генерить файлы - ресурсов, так что если нет в стандартных виджетах, можно написать затычку  Смеющийся
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Января 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.
Записан
Dodge
Гость
« Ответ #7 : Января 08, 2008, 18:02 »

затычка - это plugin
А ресурсы тут при том, что вашу картинку нужно будет гдето хранить, в qt контент принято хранить в файлах ресурсов.

А пример с использованием таблицы стилей я вам уже приводил выше.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #8 : Января 09, 2008, 14:03 »

С помощью ресурсов увидеть картинку в дизайнере нельзя!!!

В этом то вся и проблема, за пример со стилями спасибо, я его и использовал для решения, но в качестве пути на этапе разработки использую абсолютный путь к файлу, а не путь к ресурсу (это видно в коде выше).

Потом абсолютный путь приходится менять на путь с ресурсом (уже при конечной линковке программы).

В этом то и неудобство (временами забываю подменить все пути и получается что на другой машине естественно картинки нет - т.к. указан абсолютный путь несущ. файла).

Кроме того неудобно использовать стили т.к. у всех дочерних QFrame та же картинка из-за наследования стиля пытается быть фоном. приходится для всех компонентов наследников QFrame делать доп. определение стиля с пустым фоном (тоже все в коде выше есть). А у меня внутри много таких компонентов QLabel, LCDNumber и т.д.

Вот виджет написать можно, который будет контейнером и умел бы фон показывать (это несложно, может я когда нибудь так и сделаю, просто сейчас не хочется время тратить раз уж заработало в дизайнере со стилями). Хотя странно что для такой простой цели надо свой виджет делать...

Может еще решения есть?
Записан
Dodge
Гость
« Ответ #9 : Января 10, 2008, 13:27 »

Кроме того неудобно использовать стили т.к. у всех дочерних QFrame та же картинка из-за наследования стиля пытается быть фоном. приходится для всех компонентов наследников QFrame делать доп. определение стиля с пустым фоном (тоже все в коде выше есть). А у меня внутри много таких компонентов QLabel, LCDNumber и т.д.
Попрбуй задать имя целевому виджет( например setObjectName( "myWidget_9321" ) ), а стиль для него задать так:
Код:
MyWidgetClass#myWidget_9321 {
    ...
}
если не ошибаюсь, это выглядит именно так, уточнить можно в асисте.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #10 : Января 11, 2008, 03:30 »

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


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