Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: IGHOR от Октябрь 02, 2008, 17:26



Название: July Button Class Generator
Отправлено: IGHOR от Октябрь 02, 2008, 17:26
При написании программ с нестандартным интерфейсом часто приходится "баловатся" с обьектами,
на это уходит много времени.
И чтобы не делать такую рутинную работу я решил написать свои класы и к ним генераторы.
Пример такого генератора есть сдесь http://www.ighor.info/Qt4/JulyButtonGenerator.rar
Скриншот прикреплен к топику.
Это генератор кода для мной созданного класа осснованого на QWidget.
Мне хотелось бы услышать ваши мысли об таком проекте.


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 02, 2008, 17:50
забавно. чуть позже соберу-посмотрю...
надеюсь, этот генератор умеет создавать .h/.cpp файлы с классом кнопки? было бы удобнее копипаста...

зы. 'жи'/'ши' пиши через 'и'©школа..."жырный" :)


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 02, 2008, 17:56
Извените за ошибки :) но пишу как умею
а h и сpp класса я покачто выкладывать не буду


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 02, 2008, 18:10
а h и сpp класса я покачто выкладывать не буду
я имел в виду не сорцы самого генератора (без них, конечно, хуже, но терпимо), а возможность генерирования файлов класса по шаблону...чтобы кроме копипаста была возможность сгенерировать класс, закинуть эти файлы в проект и подключить, а в сорцах добавить лишь инклю и *=нью...

ждём под жпл'ем :)


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 02, 2008, 18:14
Будет жпл.
От темы я хотел услышать о надобности таких генераторов для других обьектов.
И буду приступать к написанию, ибо удобно это юзать :)


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 02, 2008, 18:29
вполне полезная тулза, когда хочется поизвращаться над внешним видом кнопок :)
а какие ещё объекты подразумеваются? что-то навскидку не смог придумать для каких ещё виджетов можно было бы применить подобный генератор...


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 02, 2008, 19:00
Подразумевается на подготове аналог QLabel, QTextEdit - в них я сделал градиентные фоны, безпредел с ресайзингом шрифтов и выкручивание границ разной геометри.
В генераторе QLabel будет возможность делать рамку текста и произвольно разтягивать.
Далее думаю чтото похожее сделать из QScrollBar и посмотрю что еще будет интересным..
В кнопку доделаю анимацию по таймерах чтобы плавно нажималась.
А кнопка будет в релизе когда доделаю все задуманные еффекты.
Один из них ето типа того что прикреплен, выкручивать все границы на изнанку с помощью PainterPath, оно еще не готово, так что превью из фотошопа


Название: Re: July Button Class Generator
Отправлено: Karl-Philipp от Октябрь 02, 2008, 22:54
Покалацал - понравилось.

Непонятно только следующее: справа (там где групбоксы "Колір тексту", "Колір кнопки", "Колір кнопки при наведенні", "Колір тіні кнопки") в каждом групбоксе около названия цвета есть кнопка маленькая. Поклацал раз 100 одну из них - никакой реакции.
Это что-то не так работает или функционал в перспективе?

А вообще очень полезный инструмент будет:)


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 02, 2008, 23:08
Поклацал раз 100 одну из них - никакой реакции.
завидное упорство...я бы даже сказал, занудство :))


Название: Re: July Button Class Generator
Отправлено: Karl-Philipp от Октябрь 02, 2008, 23:13
поклацал я еще 5 минут кнопку-образец :) с разными настройками и взбрело такое в голову: а что если сделать возможность задавать параметры "глубины утапливаемости" кнопки при нажатии? То есть задавать размер, форму и другие характеристики кнопки в нажатом состоянии.  Что скажете?


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 02, 2008, 23:56
Покалацал - понравилось.

Непонятно только следующее: справа (там где групбоксы "Колір тексту", "Колір кнопки", "Колір кнопки при наведенні", "Колір тіні кнопки") в каждом групбоксе около названия цвета есть кнопка маленькая. Поклацал раз 100 одну из них - никакой реакции.
Это что-то не так работает или функционал в перспективе?

А вообще очень полезный инструмент будет:)

если рус интерфейс удобнее то в архиве был файл русификации киньте его в папку с ехе.

те  кнопки что справа 255,255,.... то ето правее спин боксов кнопки сброса значения по умолчанию.
Ето правда лишнее ? казалось мне что ето пригодится

поклацал я еще 5 минут кнопку-образец :) с разными настройками и взбрело такое в голову: а что если сделать возможность задавать параметры "глубины утапливаемости" кнопки при нажатии? То есть задавать размер, форму и другие характеристики кнопки в нажатом состоянии.  Что скажете?

Чтото похожее планируется сделать, я собираюсь переделать интерфейс генератора ибо места уже нет на форме и добавить такие настройки для каждого состояния. И в каждом состояние можно будет менять цвет текста и размер а также всю геометрию кнопки, но сначала нужно сделать "движок" для плавных анимаций а после под него делать такие возможности.

Еще обратите внимание на чекбокс в групбоксе "Цвет текста"
если отключить групбокс тогда цвет текста будет такой же как цвет кнопки, тоисть при наведении будет менять цвет.
Щелкните чекбокс "Масштабирующее нажатие" и понажимайте кнопку (оно покачто сделано ресайзингом QBitmap, переделываю на вектрное маштабирование).


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 00:08
Генератор собран в статик сборке, я только что заметил что там не работают плагины qjpg qgif тоисть кнопка "Задать фон" и "Задать иконку" грузит только png картинки.
Раньше не юзал статик, Скажите пожалуйста как линковать плагыни картинок в статик сбокрку ехе ?


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 03, 2008, 00:14
qthelp://com.trolltech.qt.443/qdoc/plugins-howto.html#static-plugins


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 02:23
Спасибо, Константин все забываю что в ассистанте есть все :)
Качайте генератор с рабочей загрузкой картинок, линк старый http://www.ighor.info/Qt4/JulyButtonGenerator.rar
Завтра выложу сам класс, когда скомпилирую lib


Название: Re: July Button Class Generator
Отправлено: Karl-Philipp от Октябрь 03, 2008, 12:35
...
если рус интерфейс удобнее то в архиве был файл русификации киньте его в папку с ехе.
...

да почему же, на украинском языке очень даже устраивает :)

...
те  кнопки что справа 255,255,.... то ето правее спин боксов кнопки сброса значения по умолчанию.
Ето правда лишнее ? казалось мне что ето пригодится
...
Справа от спинбоксов все нормально - нужные кнопки. А вот слева от спинбоксов - непонятно назначение кнопок.
Скрин прилагаю.


Название: Re: July Button Class Generator
Отправлено: Karl-Philipp от Октябрь 03, 2008, 12:52
сижу и думаю, что за кнопочки вроде и от стандартных отличаются :)
Это ж слайдеры :) только что понял. Просто монитор 15ти дюймовый, вот они и "съёжились"  :D


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 13:58
Да.. ну ниче, поправлю както.
Слайдеры там какраз нужны, юзая их удобно смотреть как сразу меняется вид кнопки
А разришение какое ?


Название: Re: July Button Class Generator
Отправлено: Karl-Philipp от Октябрь 03, 2008, 14:18
Да, да - слайдеры безусловно нужны. Разрешение 800х600.


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 18:20
Оптимизировал и нечто добавил. Тестируйте http://www.ighor.info/Qt4/JulyButtonGenerator1.0.8.rar
Сейчас буду пробовать собрать либ


Название: Re: July Button Class Generator
Отправлено: Karl-Philipp от Октябрь 03, 2008, 19:43
1. Для загрузки иконки надо щелкнуть соответствующий чекбокс - появится диалоговое окно выбора файла иконки. Допустим выбрал я нужный рисунок, но для его изменения мне приходится еще 2 раза щелкать чекбокс, чтобы сперва указать, что иконки не будет, а затем, чтобы заново открыть диалог выбора файла, а это не очень удобно. Хотя может и придирка :)

2. После загрузки иконки текст и сама иконка неравномерно располагаются на кнопке (см. приложение).


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 19:45
1. Для загрузки иконки надо щелкнуть соответствующий чекбокс - появится диалоговое окно выбора файла иконки. Допустим выбрал я нужный рисунок, но для его изменения мне приходится еще 2 раза щелкать чекбокс, чтобы сперва указать, что иконки не будет, а затем, чтобы заново открыть диалог выбора файла, а это не очень удобно. Хотя может и придирка :)

2. После загрузки иконки текст и сама иконка неравномерно располагаются на кнопке (см. приложение).

1 Может исправлю.
2 Так задумано, юзайте "гориз зсув"


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 19:51
Еще задумано что когда удалить текст то картинка будет по центру, ето для того чтобы можна было сам текст нарисовать в фотошопе и прикрепить в кнопку как картинку.
А еще з самого начала был глюк в Регуляторе внешней и внутренней грани, я его специально не поправил потому что выходит прикольной кнопка когда например выставить:
Ширина 240
Высота 220
Внешняя грань 200
Внутренняя грань 3
Сами увидете еффект :)
Если бдует ненужным то поправлю


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 03, 2008, 22:52
Проэкт будет выложен сдесь: http://www.gigasoftgroup.com в меню JulySoft©


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 08, 2008, 04:43
Вот последняя версия: http://www.ighor.info/Qt4/JulyButtonGeneratorV1.1.0.rar
Генератор уже дописан, но класс еще не выложен потому что
мне не удается подключить lib.
К примеру код h файла:
Код:
#ifndef JULYBUTTON_GLOBAL_H
#define JULYBUTTON_GLOBAL_H

#include <Qt/qglobal.h>

#ifdef JULYBUTTON_LIB
# define JULYBUTTON_EXPORT Q_DECL_EXPORT
#else
# define JULYBUTTON_EXPORT Q_DECL_IMPORT
#endif

class LIB_EXPORT JulyButton : public QWidget
{
public:
void setText(QString t);
void setTempHovered(bool on=true);
void setFont(QFont f);
void setColor(QColor col);
void setTextColor(QColor col);
void setHighlightColor(QColor hi);
void setAllOpacity(int op);
void setOpacity(int op);
void setOpacityHovered(int op);
void setRoundness(int rH,int rV);
void setBorder1(int bor);
void setBorder2(int bor);
void setShadowColor(QColor col);
void setColTextAsColButton(bool on);
void setLtBorder(int n=0);
void setRbBorder(int n=0);
void setZoomed(bool on, bool outZoomint=true);
void setIcon(QPixmap pixmap, bool iconLeft=true, int w=0, int h=0, int iconH=5);
void clearIcon();
void reNewMask();

bool getZoomed();
QString getText();
QColor getColor();
QColor getTextColor();
QColor getShadowColor();
QFont getFont();
QColor getHighlightColor();
QPixmap pixmap();
int getOpacity();
int getOpacityHovered();
int getRoundH();
int getRoundV();
int getBorder1();
int getBorder2();
int getLtMargin();
int getRbMargin();
JulyButton(QWidget *parent=0, bool noTextCodec=false);
~JulyButton();

signals:
void rightClicked();
void clicked();
void pressed();
void relesed();
}

#endif // JULYBUTTON_GLOBAL_H

Компилирую lib подключаю pri
И в проекте не видно функций.
Помогите разобратся, не приходилось делать либ.

И еще один вопрос, в генераторе что линк выше есть языковая поддержка, но язык не применяется к меню и About окну.
Как ето поправить ?

После етих правок клас JulyButton будет доступен для скачки


Название: Re: July Button Class Generator
Отправлено: lit-uriy от Октябрь 08, 2008, 08:38
2 IGHOR, а как ты перевод подцепляешь к своей программе?


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 08, 2008, 13:43
void JulyButtonGenerator::setLanguage(QString lang)
{
   QTranslator translator;
           translator.load(languagesDir+"/"+lang+".lng");
    QCoreApplication::installTranslator(&translator);
    ui.retranslateUi(this);
}


Название: Re: July Button Class Generator
Отправлено: lit-uriy от Октябрь 08, 2008, 15:41
а что такое languagesDir? Это важный пункт.
мой вариант, работает железно на видавозе, такой (http://www.forum.crossplatform.ru/index.php?showtopic=688), lang задавать не надо, определяется сам


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 08, 2008, 16:39
languagesDir+"/"+lang+".lng" Ето полный путь к файлу *.qm
перевод загружается, и файл определяется, смотрите сами: http://www.ighor.info/Qt4/JulyButtonGeneratorSetup.rar
только меню не переводится, может есть какаято функция типа
QMenu *menu=new QMenu(this);
...
menu->retranslate();
?


Название: Re: July Button Class Generator
Отправлено: lit-uriy от Октябрь 08, 2008, 17:14
у меня меню само писаное в одной из моих программ, в коде все на аглицком и указанным мною способом загружается перевод, он подхватывается корректно, т.е. специально я ничего не делал.

предположение: при переводе ts-файлов перевод должен быть "четким/уверенным" т.е. в Лингвисте должен стоять зеленый крыжик, если крыжик другого цвета - неуверенный перевод, то может и не подхватится из qm-файла.

Функции retranslate() я не использую (это вроде для созданных в дизайнере файлов), т.к. у меня ГУЙ весь ручками создан. Может здесь собака порылась.


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 08, 2008, 18:30
раз уж тема перешла в это русло, то...
есть у меня компонента - менджер языков - я собирался в свободное время выковырять её, отряхнуть от картофельных очисток и выложить под (л)жплем. там всё очень просто и универсально...хотя и требует ещё некоторых тестов...
что скажете? желающие помочь тестированием найдутся?


Название: Re: July Button Class Generator
Отправлено: lit-uriy от Октябрь 08, 2008, 18:31
2 Константин, поможем


Название: Re: July Button Class Generator
Отправлено: IGHOR от Октябрь 08, 2008, 20:49
потестируем


Название: Re: July Button Class Generator
Отправлено: ритт от Октябрь 22, 2008, 10:19
http://www.prog.org.ru/topic_7869_0.html
что-то пока никто не потестировал и не помог :)


Название: Re: July Button Class Generator
Отправлено: developer от Октябрь 22, 2008, 13:15
Программа, помоему очень даже нужная, пробовал тестить - понравилась. Автору спасибо.


Название: Re: July Button Class Generator
Отправлено: SASA от Октябрь 22, 2008, 19:34
Вещь полезная!
Аналоги:
В дизайнере есть редоктировалка Style Sheet, с помощью которой можно многое сделать.
Пожелания:
1. В редоктировалки Style Sheet можно задать цвет кнопки градиентом, там же есть окошко с удобной настройкой градиента. (здесь не нашёл :(). Да и не всегда нужна градиентная заливка.
2. Желательно генерить и Style Sheet.
3. Хотелось бы регулировать глубину нажатия.
P.S. Что такое тень?