Russian Qt Forum

Qt => QSS => Тема начата: Flakes от Январь 21, 2008, 07:36



Название: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 21, 2008, 07:36
Qt Designer 4.3.3

создал resource, вставил картинку, заюзал пусть к этой картинке в styleSheet,
прописал
Код:
background: url(:/image.png);

нивкакую не отображает ее, пробовал на любых элементах, кнопках, диалогах, поддерживаемых атрибутом background, различные вариации -repeat -origin -image, как только путь к картике не прописывал - не получается, в preview тоже пусто...

изучил прилагаемый пример Style Sheet - точно также, брал код из окна Style Editor (из примера), если форму открыть в дизайнере - тоже нет картинок

что я не так делаю? кодить в слепую что ли, а потом компилировать и любоваться?


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: ритт от Январь 21, 2008, 10:09
попробуй background-image: url(:/image.png);


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Racheengel от Январь 21, 2008, 12:31
а путь к картинке правильный (в ресурсе) ?
и попробуй еще styleSheet в ресурсы интегрировать


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: chipset от Январь 21, 2008, 13:11
Я как то видел.
Код:
border-image: url(:/style/button_normal.bmp);
border-width: 5px;
вроде работало... хоть и border qt как раз на кнопку засовывал


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 21, 2008, 13:33
бесполезно, все перечисленное уже пробовал, вот приложил скрины, все находится в одной папке, пытаюсь натянуть 500х200 картинку на пустую форму QWidget, да на что только уже не пробовал:

skin.qrc
Код:
<RCC>
    <qresource prefix="/" >
        <file>pic.png</file>
    </qresource>
</RCC>

проблема что даже родной пример от trolltech не пашет!

UPD: почему img тег не работает на форуме?
Код:
[img]http://dump.no/files/065f61fd1e96/qt.PNG[/img]
(http://dump.no/files/065f61fd1e96/hd.PNG)
(http://dump.no/files/065f61fd1e96/qt.PNG)


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 21, 2008, 14:21
Что касаеться QPushButton, то есть баг репорт на такое поведение:

http://trolltech.com/developer/task-tracker/index_html?method=entry&id=195233


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 22, 2008, 18:38
Я уже успел понять что как то неверно прописывается пусть к файлу, но похоже что эта банальная проблема абсолютно неразршима!  :D :'(

Придется ждать Qt5


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Racheengel от Январь 22, 2008, 21:22
посмотри это http://www.ii-system.com/soft/devzone/Qt%20Vista%20Style%20test.2007.12.24.zip
вроде работает все как надо


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 22, 2008, 22:23
как можно заметить - в ресурсах свои картинки радиокнопок, галочки и тд - но в результате я нихрена не вижу на форме

у меня голая винда, и только Qt, что за лажа, уже раздражает


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Sergey B. от Январь 22, 2008, 22:32
Да... Что-то там индус Гириш постарался...
Один индус вон наколбасил, что нихрена не работает... :)


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Racheengel от Январь 22, 2008, 23:05
а компилить ты пробовал?


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 22, 2008, 23:12
нет конечно, у меня и компилить то нечего, это не моя часть проекта, инача зачем в Qt дизайнер, когда я могу тот же CSS набросать в Dreamweaver

мне что компилить каждый раз по пол часа, ожидая не ошибся ли я на 1 пиксель где то в CSS, да это же самоубийство


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 23, 2008, 00:05
я установил все это под Ubuntu - Я вижу пикчи - в Windows нет

если в X11 работает только если указываю абсолютный пусть - то есть даже не создавая ресурсы, с отностиленым пока не выходит

то в Windows какой то свой синтаксис...


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Emc от Январь 23, 2008, 12:26
http://doc.trolltech.com/4.3/resources.html
создай папку images - попробуй с ней -- у тебя префикс странный


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 23, 2008, 17:32
да бесполезно... создавал, как только не извращался

как понял, префикс ":/" - при указании отностительного пути для ресурсов, "/" - для абсолютного пути
возможно во время выполнения все встает на свое место, но если под X11 в Дизайнере все отображается, правда не работает с ресурсами, в Windows вообще ни с чем не работает


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 23, 2008, 18:11
Отправьте репорт тролям, если вы уверены что это бага.


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 23, 2008, 18:46
я отправил - пока тихо

немного оффтоп, если под Винду это все компилится в Visual Studio - то как в X11, тупо через g++? =) я пока нуб в этом


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 23, 2008, 19:19
Да, можно использовать GCC или Intel


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 23, 2008, 23:38
вопрос все равно остается открытым, проблема не решена!

с какой версии в Qt Designer появилась поддержка StyleSheet, неужели никто им не пользуется, что этот косяк досихпор не всплыл

или все считают что только после компиляции должно все отображаться, но в X11 то отображается!

(http://xs123.xs.to/xs123/08043/screenshot136.png.xs.jpg) (http://xs.to/xs.php?h=xs123&d=08043&f=screenshot136.png)


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: ритт от Январь 24, 2008, 00:16
например, я дизайнером никогда и не пользуюсь...начну пользоваться с 4.4 для экономии времени - там добавили просмотр уишки в виде кода...

жди ответа троллей - не суетись


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 24, 2008, 00:26
вопрос все равно остается открытым, проблема не решена!

с какой версии в Qt Designer появилась поддержка StyleSheet, неужели никто им не пользуется, что этот косяк досихпор не всплыл

или все считают что только после компиляции должно все отображаться, но в X11 то отображается!

(http://xs123.xs.to/xs123/08043/screenshot136.png.xs.jpg) (http://xs.to/xs.php?h=xs123&d=08043&f=screenshot136.png)

Если есть возможность, то проверь на Qt 4.4 - должно работать


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: ритт от Январь 24, 2008, 00:32
а что за тема оформления на картинке?


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 24, 2008, 00:47
nimbus от Sun
http://dlc.sun.com/osol/jds/downloads/extras/

Qt4.4 мне скомпилить не удалось ни в винде ни в линухе =( а релиза ждать еще думаю оч долго
может где есть готовые бинарники?


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: break от Январь 24, 2008, 00:53
У меня была похожая проблема:

http://prog.org.ru/forum/index.php/topic,6679.0.html

Сначало необходимо было кодом картинку устанавливать- потом захотел в дизайнере.

У меня QT 4.3.2
Linux Kubuntu 7.10

я все таки смог воспользоваться styleSheet - ами
1) ни Дизайнер ни предварительный просмотр не умеют отображать картинку из ресурсов, даже если этот файл ресурсов в дизайнере подстыковывать
2) с помощью относительных путей тоже не получилось
3) с помощью абсолютных путей картинка отображается и в дизайнере и в предварительном просмотре, я этим и пользуюсь - сделал StyleSheet в котором пока закомментировал вызов картинки из ресурсов а оставил абсолютный путь, потом когда будет окончательная сборка проекта верну вызов из ресурса. Если в ресурсе и в StyleSheet путь одинаковый и при компиляции проекта не ругнется на отсутствие файла (т.е. он действительно есть) то все работает - проверял.

Если в винде у вас по абсолютному пути не работает: - с слешами не могли случайно напутать? или с длинными путями?, или вдруг русские буквы в пути с пробелами - попробуйте для теста в корень скопировать и оттуда вызвать например ("C:\my_pict.bmp").


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 24, 2008, 01:30
спасибо за подробный ответ, все что вы перечислили - очень грамотное и короткое описание моей проблемы =)

перепробовал следующие варианты:

Код:
url(\C:\pic.png)
url(\C\pic.png)
url(/C:/pic.png)
url(/C/pic.png)

url(:\C:\pic.png)
url(:\C\pic.png)
url(:/C:/pic.png)
url(:/C/pic.png)

c "..." ругается вовсе

в винде я знаю еще есть один способ указания абсолютного пути вида
Код:
\\?\Device1\Partition0\pic.png
но опять же какие слеши в каком количестве и так далее - перебирать можно очень долго варианты



Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: vaprele07 от Январь 24, 2008, 03:48
Цитировать
<RCC>
    <qresource prefix="/" >
        <file>pic.png</file>
    </qresource>
</RCC>
Да знакомая тема, как я понял все дело в префикс!
по идее путь к ресурсу должен выглядеть так:
url("/:pic.png")
см: http://doc.trolltech.com/4.3/qdir.html (QDir::setSearchPaths)


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: ритт от Январь 24, 2008, 04:03
вапреле, вообще-то url(":/pic.png")
плюсом эти варианты уже рассматривались


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 24, 2008, 17:16
мне троли с багрепорта ответили, для абсолютных путей в винде это делается так:
Код:
url(C:/background.jpg)
работает - проверил, почему до этого неработало, тут зависит как и гдеэто прописывать, елси сделать во внутреннем QWidget - то видно сразу, если же в QDialog - то видно только по Preview (Сtrl+R) - я не всегда превью делал, и пропустил этот момент

про то почему из ресурсов нихрена - не ответили еще, этот вопрос я им во втором багрепортом отправил, но тут уже точно либо баг либо недоработка, так как при компиляции все видно


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 24, 2008, 18:25
ответили про ресурсы - это как сказали всем хорошо известный баг, который обещали исправить в следующем релизе

он так хорошо известен всем, а я неделю голову ломаю
http://trolltech.com/developer/task-tracker/index_html?method=entry&id=136982

в принципе тут уже добавить нечего, можно закрывать обсуждение =) и ждать Qt4.4


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 24, 2008, 19:04
Судя по статусу баг уже справлен в 4.4.0. Можно свзять последний снапшот и попробывать собрать его


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 24, 2008, 19:31
мне собрать не удалось, VS 2008 & Qt 4.4.0-tp1, умерло на середине =(

Код:
...............................................
Generating Code...
Compiling...
moc_qsocketnotifier.cpp
moc_qtimer.cpp
moc_qtranslator.cpp
moc_qobjectcleanuphandler.cpp
moc_qsharedmemory.cpp
moc_qeventdispatcher_win_p.cpp
moc_qwineventnotifier_p.cpp
moc_qtextcodecplugin.cpp
Generating Code...
Creating library ..\..\lib\QtCored4.lib and object ..\..\lib\QtCored4.exp
qfuturewatcher.obj : error LNK2001: unresolved external symbol "public: static s
truct QMetaObject const QFutureWatcherBase::staticMetaObject" (?staticMetaObject
@QFutureWatcherBase@@2UQMetaObject@@B)
qfuturewatcher.obj : error LNK2001: unresolved external symbol "public: virtual
struct QMetaObject const * __thiscall QFutureWatcherBase::metaObject(void)const
" (?metaObject@QFutureWatcherBase@@UBEPBUQMetaObject@@XZ)
qfuturewatcher.obj : error LNK2001: unresolved external symbol "public: virtual
void * __thiscall QFutureWatcherBase::qt_metacast(char const *)" (?qt_metacast@Q
FutureWatcherBase@@UAEPAXPBD@Z)
qfuturewatcher.obj : error LNK2001: unresolved external symbol "public: virtual
int __thiscall QFutureWatcherBase::qt_metacall(enum QMetaObject::Call,int,void *
 *)" (?qt_metacall@QFutureWatcherBase@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::progressRangeChanged(int,int)" (?progressRangeCha
nged@QFutureWatcherBase@@IAEXHH@Z) referenced in function "public: void __thisca
ll QFutureWatcherBasePrivate::sendCallOutEvent(class QFutureCallOutEvent *)" (?s
endCallOutEvent@QFutureWatcherBasePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::progressTextChanged(class QString const &)" (?pro
gressTextChanged@QFutureWatcherBase@@IAEXABVQString@@@Z) referenced in function
"public: void __thiscall QFutureWatcherBasePrivate::sendCallOutEvent(class QFutu
reCallOutEvent *)" (?sendCallOutEvent@QFutureWatcherBasePrivate@@QAEXPAVQFutureC
allOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::progressValueChanged(int)" (?progressValueChanged
@QFutureWatcherBase@@IAEXH@Z) referenced in function "public: void __thiscall QF
utureWatcherBasePrivate::sendCallOutEvent(class QFutureCallOutEvent *)" (?sendCa
llOutEvent@QFutureWatcherBasePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::resultReadyAt(int)" (?resultReadyAt@QFutureWatche
rBase@@IAEXH@Z) referenced in function "public: void __thiscall QFutureWatcherBa
sePrivate::sendCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEvent@QFu
tureWatcherBasePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::resultsReadyAt(int,int)" (?resultsReadyAt@QFuture
WatcherBase@@IAEXHH@Z) referenced in function "public: void __thiscall QFutureWa
tcherBasePrivate::sendCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEv
ent@QFutureWatcherBasePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::resumed(void)" (?resumed@QFutureWatcherBase@@IAEX
XZ) referenced in function "public: void __thiscall QFutureWatcherBasePrivate::s
endCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEvent@QFutureWatcherB
asePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::paused(void)" (?paused@QFutureWatcherBase@@IAEXXZ
) referenced in function "public: void __thiscall QFutureWatcherBasePrivate::sen
dCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEvent@QFutureWatcherBas
ePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::canceled(void)" (?canceled@QFutureWatcherBase@@IA
EXXZ) referenced in function "public: void __thiscall QFutureWatcherBasePrivate:
:sendCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEvent@QFutureWatche
rBasePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::finished(void)" (?finished@QFutureWatcherBase@@IA
EXXZ) referenced in function "public: void __thiscall QFutureWatcherBasePrivate:
:sendCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEvent@QFutureWatche
rBasePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
qfuturewatcher.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall QFutureWatcherBase::started(void)" (?started@QFutureWatcherBase@@IAEX
XZ) referenced in function "public: void __thiscall QFutureWatcherBasePrivate::s
endCallOutEvent(class QFutureCallOutEvent *)" (?sendCallOutEvent@QFutureWatcherB
asePrivate@@QAEXPAVQFutureCallOutEvent@@@Z)
..\..\lib\QtCored4.dll : fatal error LNK1120: 14 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\link.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: vaprele07 от Январь 25, 2008, 03:12
Qt 4.4.0-tp1 работает только в просмотре, зато добавили Add resource, gradient, color, font


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 25, 2008, 14:25
мне собрать не удалось, VS 2008 & Qt 4.4.0-tp1, умерло на середине =(

А вы попробуйте взять не Qt 4.4.0-tp1, а снапшотик, допустим за вчерашний день, возможно эту проблему уже пофиксили (уже прошло больше месяца после выхода Technology Preview)

ftp://ftp.trolltech.com/qt/snapshots/


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 25, 2008, 21:56
src-4.3.4-snapshot-20080125
Цитировать
Please put the Qt license file, '.qt-license' in your home directory and run configure again.

где ж я его возьму, и чего она его просит?

UPD: достал файлик лицензии, скомпилил - нет, в снапшоте это еще не пофиксено, все так же по прожнему


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: pastor от Январь 26, 2008, 07:39
Что-то не понял какую версию вы собирали, 4.3.4?

ЗЫ: Странно, но я не вижу ниодного снапшота за 25 число


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Flakes от Январь 26, 2008, 17:41
ну как же нету, qt-all-opensource-src-4.3.4-snapshot-20080125.zip (ftp://ftp.trolltech.com/qt/snapshots/qt-all-opensource-src-4.3.4-snapshot-20080125.zip)

да, тупанул, я выбрал по последней дате и не подумал крутинуть ниже и посмотреть что есть 4.4 =) попробую его собрать


Название: Re: Qt4: styleSheet backgound не работает с файлами
Отправлено: Zaibatsu от Июль 27, 2009, 15:58
таже проблема.
Решил так:
 pushButton->setStyleSheet("QPushButton {   background-image: url(Resources/your_bitmap.bmp);  }");

тоесть в url можно использовать относительный путь по папке проекта.
p.s. для тех кто может столкнется с такой же проблемой
p.p.s точно работает в QT 4.4.3