Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ embedded-widgets[РЕШЕНО]
Автор: igor_bogomolov 1.4.2009, 16:05
Скачал себе Embedded Widget (http://www.qtsoftware.com/developer/files/embedded-widget-demos/qt-embedded-widgets-source-and-documentation). Уж больно понравились все эти кнопочки. Решил использовать у себя в приложении. Благо компилировать можно везде.
Но вместо виджетов отображается пустое пространство. Что не так делаю никак не пойму. В примере который идет с библиотекой все отображается нормально.
Вот простой компилируемый пример.
#include <QtGui>
#include <QtSvgButton>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QtSvgButton * button = new QtSvgButton();
button->setSkin("Beryl");
button->resize(100, 50);
button->show();
QApplication::arguments().contains("-no-embedded");
return app.exec();
}
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
include(f:/QT/Examples/embedded-widgets-1.1.0/src/svgbutton/svgbutton.pri)
SOURCES += button.cpp
CONFIG += release
CONFIG -= debug
QT *= svg
Подскажите, что нужно сделать, чтобы все отображалось нормально.
Автор: Litkevich Yuriy 1.4.2009, 17:11
Мне непонятны две вещи:
Цитата(igor_bogomolov @ 1.4.2009, 20:05)
QApplication::arguments().contains("-no-embedded");
для чего?
Цитата(igor_bogomolov @ 1.4.2009, 20:05)
QT *= svg
что за звёздочка?
Автор: igor_bogomolov 1.4.2009, 17:41
QApplication::arguments().contains("-no-embedded") совершенно не нужен, но и не мешет. Это от экспериментов осталось. Нашел такую строку в примере, вот и добавил не подумав. На самом деле в примере таким образом проверяется входной параметр, и если это -embedded, то устанавливается setWindowState(Qt::WindowFullScreen);, иначе не устанавливается
Цитата(Litkevich Yuriy @ 1.4.2009, 18:11)
что за звёздочка?
Понятия не имею. Скопировал из про файла прилагаеммого к библиотеки примера. Эту строку я пробовал и убирать вообще, на компиляции никак не отразилось. Т.е. компилируется без проблем, только не рисует ничего.
Автор: Litkevich Yuriy 1.4.2009, 18:20
а уменя вот даже каталог (catalog) не собирается, только patientcare собрался
Автор: igor_bogomolov 1.4.2009, 18:26
Litkevich Yuriy У меня тоже самое. Я пока не стал на этом зацикливаться. Одного работающего примера вполне достаточно.
Для работы с библиотекой все равно ничего собирать не надо, как я понял из описания, просто подключаем ее и все.
Не пробовали еще собрать свой пример, какие результаты?
patientcare - симпатичная штучка, неправда ли
Автор: Litkevich Yuriy 1.4.2009, 18:47
Цитата(igor_bogomolov @ 1.4.2009, 22:26)
Для работы с библиотекой все равно ничего собирать не надо, как я понял из описания, просто подключаем ее и все.
Не пробовали еще собрать свой пример, какие результаты?
в этом-то вся и проблема, что не собирается хотя всеголишь исходники. И ошибка странная:
Цитата
QtGui: No such file or directory
на стандартный инклюд, а в
patientcare файл проекта принципиальных отличий не имеет. Да и в make-фале есть путь соответствующий.
Автор: igor_bogomolov 1.4.2009, 21:39
Разобрался. Как всегда, все проблемы из-за торопливости, и как следствие невнимательности.
Ниже простейший рабочий пример (пути естественно меняем на свои)
#include <QtGui>
#include <QtSvgButton>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QtSvgButton * button = new QtSvgButton();
button->setSkin("Beryl");
button->resize(200, 200);
button->show();
return app.exec();
}
TEMPLATE = app
INCLUDEPATH += .
include(D:/Project/embedded-widgets-1.1.0/src/svgbutton/svgbutton.pri)
CONFIG += release
CONFIG -= debug
RESOURCES += D:/Project/embedded-widgets-1.1.0/src/skins/beryl_svgbutton.qrc
SOURCES += button.cpp
QT *= svg
Всем спасибо.
Автор: igor_bogomolov 2.4.2009, 2:22
После пяти часов плясок с бубном, собрал пример catalog.
Всего то надо было заменить в файле mainwindow.cpp следущие строки
#include <Qt5WayButton>
#include <QtBasicDialGauge>
#include <QtBasicGraph>
#include <QtMultiSlider>
#include <QtScrollDial>
#include <QtScrollWheel>
#include <QtSvgButton>
#include <QtSvgDialGauge>
#include <QtSvgSlideSwitch>
#include <QtSvgToggleSwitch>
на
#include "qt5waybutton.h"
#include "qtbasicdialgauge.h"
#include "qtbasicgraph.h"
#include "qtmultislider.h"
#include "qtscrolldial.h"
#include "qtscrollwheel.h"
#include "qtsvgbutton.h"
#include "qtsvgdialgauge.h"
#include "qtsvgslideswitch.h"
#include "qtsvgtoggleswitch.h"
Кто бы мог подумать
[offtop]
Начало четвёртого. Скоро на работу. Чуствую утро будет "веселым".
[/offtop]
Автор: Litkevich Yuriy 2.4.2009, 6:58
Цитата(igor_bogomolov @ 2.4.2009, 6:22)
Кто бы мог подумать
что-то я не понял, причины. Почему по второму варианту компилится.
В pro-файлах везде есть:
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
помоему это у make крыша едит. т.к. всюду вывод вижу такой:
Цитата
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE ...
а когда спотыкается, то строчка идет без ключа
-с:
Цитата
g++ -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE ...
а в make-файле везде опции одинаковые
Автор: igor_bogomolov 2.4.2009, 9:25
Цитата(Litkevich Yuriy @ 2.4.2009, 7:58)
помоему это у make крыша едит
У меня вчера точно чуть крыша не съехала. Таких плясок у меня еще небыло. Причем если в проекте изначально закоментировать все что связанно с
QtBasicGraph и
QtMultiSlider , проект собирётся. А вот дальше начинается необъяснимое (для меня). Подключаю обратно
QtMultiSlider. Все отлично. Подключаю
QtBasicGraph, начинаются проблемы с компиляцией. Коментирую обратно
QtBasicGraph, проблема не исчезает, продолжает выдавать дурацкие ошибки
"QtGui: No such file or directory", только уже относительно
QtMultiSlider. Отключаю и его. Все собирается. Подключаю обратно, тоже собирается. В общем намучился я. Но если исправить инклуды, как я написал выше, никаких проблем не возникает. Причины такого поведения мне непонтны. Если кто разберется, сообщите пожалуйста.
А так впринципе вопрос решен.
Автор: Litkevich Yuriy 2.4.2009, 11:05
Предлагаю, всё таки отсавить вопрос открытым, можно конечно отдельную тему создать, но я название короткое и понятное пока не придумал.
Один раз проблема возникла, значит и еще раз всплывёт, да ещё и в самый неподходящий момент.
Автор: igor_bogomolov 2.4.2009, 11:36
Цитата(Litkevich Yuriy @ 2.4.2009, 12:05)
Предлагаю, всё таки отсавить вопрос открытым
Согласен я уже сталкнулся с проблемами. По непонятным причинам проекты с использованием данной библиотеки вдруг перестают компилироваться. Пока не сделаешь очистку, занова не собирается. Я сейчас все ныжные исходники просто перенес в свой проект. Проблемы исчезли.
Хотя, я скорее всего откажусь от использования этих виджетов, всетаки они не для комп приложений. На кнопку нельзя даже текст разместить, и сами они либо кругляе, либо квадратные. Прямоугольную кнопку без модификаций исходников не сделать. Я попробовал, получается уже некрасиво.
Мне на самам деле просто отень понравился стиль виджетов. Сейчас пробую переделать под себя. В крайнем случае можно стили выдернуть, но я пока не знаком с форматом
svg/. В общем продолжаю пока раскуривать тему.
Присоединяйтесь
Автор: Litkevich Yuriy 2.4.2009, 11:53
Цитата(igor_bogomolov @ 2.4.2009, 15:36)
Мне на самам деле просто отень понравился стиль виджетов.
мне тоже, однако это работа дизайнера, я всяко пробовал и пришел к выводу, что руки у меня явно для других целей. Ни в какую не получается, что-то нарисовать красиво.
Автор: LE0N 2.4.2009, 16:34
Внутри этого СВГ имеется такой коммент:
Цитата
<!-- Created with Inkscape (http://www.inkscape.org/) -->
Скорее всего этой вещью и создаются эти стили...
ЗЫ. Там отличный граф написан. Целый движок динамического графа....
Такого вроде же в Qt стандартного нет?
Автор: Litkevich Yuriy 2.4.2009, 17:28
Цитата(LE0N @ 2.4.2009, 20:34)
Скорее всего этой вещью и создаются эти стили...
да это просто рисунок в ИнкСкэйпе нарисован. Про стили у них в доке написано:
Цитата
The general naming spec looks like this:
<widget-name>/<skin-name>/<file-name>.svg
П.С. ребят вы доку-то собирали? (доксигеном)
Автор: igor_bogomolov 2.4.2009, 18:52
Цитата(Litkevich Yuriy @ 2.4.2009, 18:28)
П.С. ребят вы доку-то собирали? (доксигеном)
Да, конечно. Первым делом. А что?
Автор: Litkevich Yuriy 2.4.2009, 19:51
Цитата(igor_bogomolov @ 2.4.2009, 22:52)
Да, конечно. Первым делом. А что?
ну вдруг не читали.
Автор: LE0N 2.4.2009, 21:47
Да я только скачал, потом скомпилил два этих примера, посмотрел на возможности, и отодвинул до востребования...
Автор: igor_bogomolov 3.4.2009, 12:12
Поигрался немного со стилями (svg). Результат на картинке
Помоему неплохо.
Теперь у меня возник вопрос. Как на этой кнопке разместить текст?
painter.drawText почемуто к требуемому результату не приводит.
void QtSvgButton::paintEvent(QPaintEvent * event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.scale(buttonRect().width(), buttonRect().height());
if (isDown()) {
m_pressed.play(&painter);
} else if (underMouse()) {
m_hovered.play(&painter);
} else {
m_normal.play(&painter);
}
// painter.drawText(20,20,"qwqwq");
}
Есть у кого-нить какие мысли по этому поводу?
Архивчик с проектом прилогается.
-----------------------------------------
Архив обновлен.
Автор: Litkevich Yuriy 3.4.2009, 12:23
Цитата(igor_bogomolov @ 3.4.2009, 16:12)
Есть у кого-нить какие мысли по этому поводу?
может картинка, как бы закрывает текст?
Автор: igor_bogomolov 3.4.2009, 12:28
Скорее всего. Хотя текст я рисую после картинки, и предпологал что он должен быть виден.
Пока с текстом ничего не получается. Если есть возможность, поэксперементируейте пожалуйста.
Может еще какие подводные камни есть.
Автор: molchanoviv 3.4.2009, 19:55
Странные какие-то у вас у вас проблемы. У меня все собралось отлично и без этих шаманств.
Моя система: Linux, Qt 4.5, gcc 4.3.2
Автор: SABROG 3.4.2009, 20:59
Цитата(Litkevich Yuriy @ 1.4.2009, 18:11)
что за звёздочка?
Операция умножения
Шутка, конечно.
Из ассистента:
Цитата
The *= operator adds a value to the list of values in a variable, but only if it is not already present. This prevents values from being included many times in a variable.
Оператор, который ищет существует ли уже такой ключ, и если существует, то не добавляет его. На самом деле я бы его использовал везде вместо +=, т.к. он более правильный.
Но, к сожалению, не интуитивно понятный не только для новичков, но и для тех, кто с Qt не первый год
Автор: Litkevich Yuriy 4.4.2009, 6:19
Цитата(SABROG @ 4.4.2009, 0:59)
Оператор, который ищет существует ли уже такой ключ, и если существует, то не добавляет его. На самом деле я бы его использовал везде вместо +=, т.к. он более правильный.
да, я пожалуй возьму на вооружение.
Автор: igor_bogomolov 5.4.2009, 2:13
Цитата(molchanoviv @ 3.4.2009, 20:55)
Странные какие-то у вас у вас проблемы. У меня все собралось отлично и без этих шаманств.
Моя система: Linux, Qt 4.5, gcc 4.3.2
Под виндой к сожалению без шаманства никак. Моя система сборки в подписи.
---------------------------------------------------------------------------------------------------------------
Сделал я себе кнопочки. Есть конечно свои недостатки, но меня вполне устраивает и так. Кому интересно, архивчик я обновил (ищите выше по треду).
Автор: igor_bogomolov 6.4.2009, 1:13
Встраивание embedded-widgets-1.1.0 в Qt Designer
Если кого-то когда-то заинтересуют эти виджетики, прилагаю архивчик, чтобы скомпилить из них плагины для QtDesigner.
Качаем его, кладем параллельно оригинальной библиотеки, и компилируем
релизом. Не забудьте также настроить окружение, чтобы плагины оказались там где надо.
Система сборки под которой все это проверялось, в моей подписи.
Автор: log1c 6.4.2009, 7:49
было бы кул оформить это в вики, весь процесс шаманства с этими виджетами
Автор: igor_bogomolov 6.4.2009, 8:48
Цитата(log1c @ 6.4.2009, 8:49)
было бы кул оформить это в вики, весь процесс шаманства с этими виджетами
Да здесь писать на самом деле нечого. Все сводится к тому, что
будьте внимательны и не забывайте читать описания.
Единственное что нашаманил, это замена #include<...> на #include"...".
И еще я отказался от использования include(...) в проектном файле, подключая все исходники вручную.
К тому же, этих проблем, как я понял под Linux не наблюдается.
Как то на вику все это не тянет, мелковато.
P.S. Ну что, может пора закрывать тему? Мне больше здесь нечего добавить.
Автор: Litkevich Yuriy 6.4.2009, 10:03
Цитата(igor_bogomolov @ 6.4.2009, 12:48)
P.S. Ну что, может пора закрывать тему?
да, пожалуй. А инклюды прибережем для другой темы.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)