Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса.
Условие: язык программирования C++.
Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п. Может кто подскажет на чем это написано? Или кто поделиться библиотечкой классов
Здравствуйте, onyx2, Вы писали:
O>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса. O>Условие: язык программирования C++.
Здравствуйте, onyx2, Вы писали:
O>Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п. Может кто подскажет на чем это написано? Или кто поделиться библиотечкой классов
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, onyx2, Вы писали:
O>>Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п. Может кто подскажет на чем это написано? Или кто поделиться библиотечкой классов
SDB>Professional UI Solutions
SDB>Xtreme ToolkitPro
SDB>BCGControlBar Library
SDB>Vista Photo Gallery (как пример реализации "гламурных" элементов управления)
Это все за деньги, и по работе использовать не получится.
Ее можно использовать в коммерческих продуктах. И там как раз есть Office 2003 скины. Я в данный момент ее и пытаюсь использовать — вроде получается =)
Здравствуйте, Sashaka, Вы писали:
S>Это все за деньги,
В исходном посте я вижу только одно условие:
Условие: язык программирования C++.
Про бесплатность и возможность использования в коммерческих проектах речи не было. Vista Photo Gallery, кстати говоря, совершенно бесплатный пример.
S>и по работе использовать не получится.
Вообще-то, "по работе" такие библиотеки как раз покупаются ИМХО. Для личных целей можно использовать бесплатную версию Prof-UIS или же упомянутый Вами Ultimate Toolbox.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
SDB>Про бесплатность и возможность использования в коммерческих проектах речи не было. Vista Photo Gallery, кстати говоря, совершенно бесплатный пример.
Да я без претензий, просто прокомментировал, что не бесплатные, и добавил которую Вы забыли.
S>>и по работе использовать не получится.
SDB>Вообще-то, "по работе" такие библиотеки как раз покупаются ИМХО. Для личных целей можно использовать бесплатную версию Prof-UIS или же упомянутый Вами Ultimate Toolbox.
Эх, если бы от меня зависило покупать или нет... На VC6.0 сидим до сих пор — жаба душит начальников =(.
O>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса. O>Условие: язык программирования C++. O>Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п.
O>Не могу определиться, что выбрать из этих двух: O>Professional UI Solutions O>Xtreme ToolkitPro
O>Кто использовал их в работе, подскажите, с чем предпочтительнее работать в плане простоты, надежности (чтоб поменьше багов было).
ИМХО, в порядке убывания качества:
1. CodeJock
2. BCG
3. Prof-UIS
Здравствуйте, astral_marine, Вы писали:
O>>Не могу определиться, что выбрать из этих двух: O>>Professional UI Solutions O>>Xtreme ToolkitPro
O>>Кто использовал их в работе, подскажите, с чем предпочтительнее работать в плане простоты, надежности (чтоб поменьше багов было).
_>ИМХО, в порядке убывания качества: _>1. CodeJock _>2. BCG _>3. Prof-UIS
O>Не могу определиться, что выбрать из этих двух: O>Professional UI Solutions O>Xtreme ToolkitPro
O>Кто использовал их в работе, подскажите, с чем предпочтительнее работать в плане простоты, надежности (чтоб поменьше багов было).
Я пользуюсь ProfUIS.
Багов я не замечал, по крайней мере для моих задач.
Из недостатков разве что при переключении стиля ХР в классический и обратно, интерфейс тормозит довольно таки долго.
Также скиновый интерфейс (из картинок) тоже тормозит при резайзе когда много элементов.
Не знаю исправили они это в текущей версии ибо сам используюсь 2.54.
В плане простоты, то можете скачать их триал или бесплатную версию посмотреть исходники.
Re[4]: красивый пользовательский интерфейс C++
От:
Аноним
Дата:
20.12.07 10:48
Оценка:
Здравствуйте, onyx2, Вы писали:
O>Здравствуйте, astral_marine, Вы писали:
O>>>Не могу определиться, что выбрать из этих двух: O>>>Professional UI Solutions O>>>Xtreme ToolkitPro
O>>>Кто использовал их в работе, подскажите, с чем предпочтительнее работать в плане простоты, надежности (чтоб поменьше багов было).
_>>ИМХО, в порядке убывания качества: _>>1. CodeJock _>>2. BCG _>>3. Prof-UIS
O>Значит все-таки Xtreme ToolkitPro O>Или еще будут мнения...
Ну у каждого "изделия" всегда найдутся любители. Вот некоторые и китайские машины покупают, царствие им небесное
Здравствуйте, onyx2, Вы писали:
O>Приветствую.
O>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса. O>Условие: язык программирования C++.
O>Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п. Может кто подскажет на чем это написано? Или кто поделиться библиотечкой классов
O>Заранее спасибо.
Здравствуйте, jim1406, Вы писали:
O>>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса.
J>Qt (http://trolltech.com/)
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, jim1406, Вы писали:
O>>>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса.
J>>Qt (http://trolltech.com/)
CS>Ну просили же красивый...
Поддерживаю полностью.
Все красивости там в ваших руках. Версия Qt 4.4 обещает быть особенной в этом плане (пример 1, пример 2). К тому же теперь Open Source версия бесплатно может быть собрана и в VS 2005 Express.
Здравствуйте, c-smile, Вы писали:
O>>>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса. J>>Qt (http://trolltech.com/) CS>Ну просили же красивый... :))
На Qt, например, Skype написана. И Google Earth. И Opera. И KDE, естественно.
Здравствуйте, shvonder, Вы писали:
L>>проще всего на Borland Builder S>Вы невнимательно прочитали требования автора вопроса: O>>>Условие: язык программирования C++. S>
вам наверное следует знать что Borland Builder C++ отвечает этим требованиям
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, c-smile, Вы писали:
O>>>>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса. J>>>Qt (http://trolltech.com/) CS>>Ну просили же красивый...
RO>На Qt, например, Skype написана. И Google Earth. И Opera. И KDE, естественно.
Здравствуйте, Димчанский, Вы писали: J>>Qt (http://trolltech.com/) Д>Поддерживаю полностью. Д>Все красивости там в ваших руках.
Вручную рисовать "красивости" позволяют пожалуй все серъезные GUI библиотеки, без исключений.
Тема же о библиотеках, которые уже сами все эти красивости рисуют.
Д>Версия Qt 4.4 обещает быть особенной в этом плане (пример 1, пример 2). К тому же теперь Open Source версия бесплатно может быть собрана и в VS 2005 Express.
Не впечетлило, уж больно кислотные цвета на скриншотах
Если сравнивать с Beryl, то очень убого. Если с Microsoft Office 2007 и Aero, то практически ничего нового по сравнению сдругими GUI библиотеками.
При использовании Qt чуствуется влияние GUI KDE, особенно под Mac-ом.
Здравствуйте, astral_marine, Вы писали:
_>Не впечетлило, уж больно кислотные цвета на скриншотах _>Если сравнивать с Beryl, то очень убого. Если с Microsoft Office 2007 и Aero, то практически ничего нового по сравнению сдругими GUI библиотеками. _>При использовании Qt чуствуется влияние GUI KDE, особенно под Mac-ом.
Не нравится мне Ваш Bugatti, совсем никудышная машина с такой расцветкой, ничего нового по сравению с запорожцем.
Здравствуйте, Димчанский, Вы писали: Д>Не нравится мне Ваш Bugatti, совсем никудышная машина с такой расцветкой, ничего нового по сравению с запорожцем.
Понятно, что о вкусах не спорят, но странно, что о библиотеке Вы судите по расцветке в демке: "Не впечетлило, уж больно кислотные цвета на скриншотах".
Здравствуйте, Димчанский, Вы писали: Д>Понятно, что о вкусах не спорят, но странно, что о библиотеке Вы судите по расцветке в демке: "Не впечетлило, уж больно кислотные цвета на скриншотах".
А как я должен судить?
Демонстрационное приложение — это пример того как практически может работать мое приложение с этой библиотекой без особых усилий с моей стороны.
Здравствуйте, Mr.Cat, Вы писали: MC>Для Qt то же самое, можно стайлшитами сделать. Другое дело, что готовый красивый стайлшит — фиг найдешь.
Многие GUI библиотеки позволяют сделать то же самое, даже в тысячи ряз круче, чем это есть в CodeJock. Но это теоретически. Сколько времени у меня на это уйдет умалчивается. А в CodeJock это уже есть, только бери и используй.
MC>PS: Странно, что всего один человек предложил HTMLayout. ИМХО — неплохой вариант.
Согласен. Попробовал — очень понравился, интерфейс очень быстро клепается. Гибкость более чем достаточная — можно и свои контролы делать, и реюзать их потом влёт. Самое главное — дизайнеры сейчас хорошо умеют рисовать HTML-и, и их довольно несложно потом впихнуть в приложение прямо "как есть". Из дополнительных плюсов — поддержка Windows Mobile 2003 и выше.
Здравствуйте, astral_marine, Вы писали:
_>А как я должен судить? _>Демонстрационное приложение — это пример того как практически может работать мое приложение с этой библиотекой без особых усилий с моей стороны.
Это все равно, что судить о функциональности (как и что может) машины по ее цвету. Не нравятся цвета, так там в стайлшите одну строчку поменять и не надо пересобирать приложение даже, тоже самое и с компоновкой контролов. В примере, думаю, намеренно выбраны контрастные цвета, чтобы люди обратили внимание, что темой можно поменять очень многое, хотя приложение одно и то же.
Здравствуйте, Димчанский, Вы писали: Д>Это все равно, что судить о функциональности (как и что может) машины по ее цвету.
А с чего вы взяли, что я сужу о функциональности? Тема же называется "красивый пользовательский интерфейс C++"
Д>Не нравятся цвета, так там в стайлшите одну строчку поменять и не надо пересобирать приложение даже, тоже самое и с компоновкой контролов. В примере, думаю, намеренно выбраны контрастные цвета, чтобы люди обратили внимание, что темой можно поменять очень многое, хотя приложение одно и то же.
Возможностью менять фоновой рисунок сейчас уже мало кого можно удивить.
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Vista Photo Gallery (как пример реализации "гламурных" элементов управления)
Вот с этим не соглашусь. ОТВРАТИТЕЛЬНЕЙШАЯ РЕАЛИЗАЦИЯ! Я такого от Бъярка не ожидал.
Здравствуйте, Left2, Вы писали:
L>Согласен. Попробовал — очень понравился, интерфейс очень быстро клепается. Гибкость более чем достаточная — можно и свои контролы делать, и реюзать их потом влёт. Самое главное — дизайнеры сейчас хорошо умеют рисовать HTML-и, и их довольно несложно потом впихнуть в приложение прямо "как есть". Из дополнительных плюсов — поддержка Windows Mobile 2003 и выше.
мое имхо, один из самых больших недостатков этой библиотеки — сложность в программировании динамических контролов.
Здравствуйте, игппук, Вы писали:
И>мое имхо, один из самых больших недостатков этой библиотеки — сложность в программировании динамических контролов.
А мне казалось наоборот, просто
Можешь рассказать на какие грабли вставал?
Здравствуйте, astral_marine, Вы писали: _>А с чего вы взяли, что я сужу о функциональности? Тема же называется "красивый пользовательский интерфейс C++"
Не впечетлило, уж больно кислотные цвета на скриншотах
Если сравнивать с Beryl, то очень убого. Если с Microsoft Office 2007 и Aero, то практически ничего нового по сравнению сдругими GUI библиотеками.
сразу же следующим предложением после непонравившихся скиншотов идет рассуждение о том, что все убого и нет ничего нового.
никаких аргументов не было прдьявлено, кроме не понравившихся цветов.
_>Возможностью менять фоновой рисунок сейчас уже мало кого можно удивить.
Никто и не собирается этим удивлять. Вам кислотный фон не понравился, я и говорю, что это меняется на раз-два и обьяснил, почему там контрастные цвета, на мой взгляд. Кроме того, может быть изменена и компоновка контролов.
все косяки решены не были, решались с трудом, поэтому в конце концов мне пришлось отказаться от использования HTMLayout. но я не отрицаю факт, что я чтото мог делать неправильно, просто тот же wxWidjets мне показалось использовать намного проще.
Д>никаких аргументов не было прдьявлено, кроме не понравившихся цветов.
Это было замечание об Look & Feel и я не приводил никаких аргументов поскольку они сугубо субъективны и могли бы спровоцировать спор о вкусах.
Но если вы настаиваиете, то пожалуйста:
1. В Beryl более продвинутая анимация
2. В Microsoft Office 2007 и Aero элементы управления переливаются и более активны на какие-либо действия пользователя.
_>>Возможностью менять фоновой рисунок сейчас уже мало кого можно удивить. Д>Никто и не собирается этим удивлять. Вам кислотный фон не понравился, я и говорю, что это меняется на раз-два и обьяснил, почему там контрастные цвета, на мой взгляд. Кроме того, может быть изменена и компоновка контролов.
... и поменять на другой кислотный цвет. Мне лично не нравится когда я в ОС устанавливаю один цвет, а отдельные "продвинутые" приложения используют другой. Как раз это я имел ввиду.
Так вроде там все или почти все решили.
И>все косяки решены не были, решались с трудом, поэтому в конце концов мне пришлось отказаться от использования HTMLayout. но я не отрицаю факт, что я чтото мог делать неправильно, просто тот же wxWidjets мне показалось использовать намного проще.
На старт необходимо потратить какое-то время. Текущий недостаток документации тоже не есть гуд.
Надумаешь еще раз попробовать HTMLayout — буду рад помочь
Здравствуйте, onyx2, Вы писали:
O>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса. O>Условие: язык программирования C++. O>Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п. Может кто подскажет на чем это написано? Или кто поделиться библиотечкой классов
> Д>Я не знаю, на чём написан Skype, но он в самом деле использует Qt. > > я не знаю где и как он использует QT, но написан он либо на делфи либо на билдере.
На Kylix, хотите сказать? Поскольку под линуксом скайп тоже есть.
> Достаточно глянуть один раз на содержимое ресурсов Skype.exe
И что там такого характерно борландовского лежит?
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, SchweinDeBurg, Вы писали:
C>>Вот с этим не соглашусь. ОТВРАТИТЕЛЬНЕЙШАЯ РЕАЛИЗАЦИЯ! Я такого от Бъярка не ожидал.
SDB>Подробностями не поделишься? А то я только мельком смотрел.
Да какие там подробности — код просто не работает Когда полез в исходники разбираться какого фига у меня все зависло, то сразу же наткунлся на то, что из текущей темы ничего не берется, куча жестко зашитых констант. Глобальная переменная _photos, которая используется для уведомлений в большинстве контролов, вместо того, чтобы посылать честные сообщения контейнеру... дальше уже смотреть не стал. Использовать это невозможно — слишком много придется переписывать, лучше уж тогда заново самому писать, выйдет и проще, и быстрее. Хорошо, что мне это не требуется
Здравствуйте, игппук, Вы писали:
И>Здравствуйте, Left2, Вы писали:
L>>Согласен. Попробовал — очень понравился, интерфейс очень быстро клепается. Гибкость более чем достаточная — можно и свои контролы делать, и реюзать их потом влёт. Самое главное — дизайнеры сейчас хорошо умеют рисовать HTML-и, и их довольно несложно потом впихнуть в приложение прямо "как есть". Из дополнительных плюсов — поддержка Windows Mobile 2003 и выше.
И>мое имхо, один из самых больших недостатков этой библиотеки — сложность в программировании динамических контролов.
Что такое "динамические контролы"?
Если например нечто типа этого:
то куда уж проще (behavior_expandable_list.cpp):
struct expandable_list: public behavior
{
// ctor
expandable_list(const char* name="expandable-list"): behavior(HANDLE_MOUSE | HANDLE_KEY | HANDLE_FOCUS, name ) {}
virtual void attached (HELEMENT he )
{
dom::element ctl = he;
bool got_one = false;
for( int i = ctl.children_count() - 1; i >= 0 ; --i)
{
dom::element t = ctl.child((unsigned int)i);
if( t.get_attribute("default") && !got_one)
{
t.set_state(STATE_CURRENT | STATE_EXPANDED); // set state flags
got_one = true;
}
else
t.set_state(STATE_COLLAPSED); // set state flags
}
}
// set current itemvirtual void set_current_item( const dom::element& ctl, dom::element& item )
{
// get previously selected item:
dom::element prev_current = ctl.find_first(":current");
dom::element prev = ctl.find_first(":expanded");
if(prev_current != item)
prev_current.set_state(0, STATE_CURRENT);
if( prev.is_valid() )
{
if( prev == item ) return; // already here, nothing to do.
prev.set_state(0,STATE_CURRENT | STATE_EXPANDED); // drop state flags
}
item.set_state(STATE_CURRENT | STATE_EXPANDED); // set state flags
}
virtual BOOL on_mouse(HELEMENT he, HELEMENT target, UINT event_type, POINT pt, UINT mouseButtons, UINT keyboardStates )
{
if( event_type != MOUSE_DOWN && event_type != MOUSE_DCLICK )
return false;
if(mouseButtons != MAIN_MOUSE_BUTTON)
return false;
// el is presumably <li>;
dom::element ctl = he;
dom::element item = target_item(ctl, target);
if(item.is_valid()) // click on the item caption
set_current_item(ctl, item);
return true; // as it is always ours then stop event bubbling
}
virtual BOOL on_event (HELEMENT he, HELEMENT target, BEHAVIOR_EVENTS type, UINT_PTR reason )
{
if( type == ACTIVATE_CHILD )
{
dom::element item = target_item(dom::element(he), target);
if(item.is_valid()) // click on the item caption
{
set_current_item(he, item);
return TRUE;
}
}
return FALSE;
}
virtual BOOL on_key(HELEMENT he, HELEMENT target, UINT event_type, UINT code, UINT keyboardStates )
{
if( event_type == KEY_DOWN )
{
dom::element ctl = he;
switch( code )
{
case VK_DOWN:
{
dom::element c = ctl.find_first(":current");
int idx = c.is_valid()? (c.index() + 1):0;
if( idx < (int)ctl.children_count() )
{
dom::element nc = ctl.child(idx);
set_current_item(ctl, nc);
}
}
return TRUE;
case VK_UP:
{
dom::element c = ctl.find_first(":current");
int idx = c.is_valid()? (c.index() - 1):(ctl.children_count() - 1);
if( idx >= 0 )
{
dom::element nc = ctl.child(idx);
set_current_item(ctl, nc);
}
}
return TRUE;
}
}
return FALSE;
}
dom::element target_item(const dom::element& ctl, dom::element target)
{
if( target == ctl )
return dom::element();
if( !target.is_valid() )
return target;
dom::element target_parent = target.parent();
if( !target_parent.is_valid() )
return target;
if( target.test("li > .caption") )
return target_parent; // only if click on "caption" element of <li>. Returns that <li> element.return target_item( ctl, target.parent() );
}
};
Я думаю что найти имплементацию Outlook Bar которая была бы проще чем это сложно будет.
я имел ввиду генерирование контролов в рантайме, а также в рантайме их удаление, а также вставка этих контролов в любое место, и с любой вложенностью.
в wxWidject проще, чем тот код, что вы мне привели.
Здравствуйте, игппук, Вы писали:
И>действительно, что может быть проще
И>я имел ввиду генерирование контролов в рантайме, а также в рантайме их удаление, а также вставка этих контролов в любое место, и с любой вложенностью. И>в wxWidject проще, чем тот код, что вы мне привели.
Что такое "генерирование контролов в рантайме"?
Нечто типа этого:
dom::element el = ...;
el.set_html("<input type=text value='hello world' /> <select><option>one</option></select>");
?
Куда уж проще?
Для конкретности спора, приведи код в wxWidject создающий в котейнере два аналогичных controls. Сильно короче получится?
А что такое "с любой вложенностью"? Нечто типа этого:
Кстати хотел бы я посмотреть решение listbox c button внутри и/или хотя бы с гиперлинками. В wxWidgets я имею ввиду.
(я понимаю что такой listbox редко когда нужен — но тем не менее).
Ну дык вроде как не проблема.
Но! Массовое использование absolute positioning в UI есть зло великое, при любом изменении языка или шрифта приводящее к очевидным багам.
Не понимаю, что в топике "красивый пользовательский интерфейс C++" делает wxWidgets?
Мое первое знакомство с wxAUI закончилось вот чем http://www.kirix.com/forums/viewtopic.php?f=15&t=600
Он портабельный, но отнюдь не красивый. Я бы посоветовал юзать BCG-шные контролы (Visual C++ 2008 Feature Pack Beta).
Сейчас выходит все больше прикладных программ в стиле 2007-го офиса (oodefrag, pocket controller), и пользователи будут плеваться на wxWidgets.
Здравствуйте, Joric, Вы писали:
J>Здравствуйте, c-smile, Вы писали:
J>Не понимаю, что в топике "красивый пользовательский интерфейс C++" делает wxWidgets? J>Мое первое знакомство с wxAUI закончилось вот чем http://www.kirix.com/forums/viewtopic.php?f=15&t=600 J>Он портабельный, но отнюдь не красивый. Я бы посоветовал юзать BCG-шные контролы (Visual C++ 2008 Feature Pack Beta). J>Сейчас выходит все больше прикладных программ в стиле 2007-го офиса (oodefrag, pocket controller), и пользователи будут плеваться на wxWidgets.
Это уже как бы OT но тем не менее... "стиль 2007-го офиса" это то что было сделано для офиса и я подозреваю хорошо сугубо для оного офиса. Почему, я думаю должно быть понятно.
Вот это, я извиняюсь, но смотрится исключительно наколеночно коряво:
Интерфейс офиса, в частности Ribbon, сделан для размещения максимального количества служебных элементов в данном контексте.
Но когда у тебя всего три кнопки зачем оно нужно? ribbon не самое лучшее решение в этом случае.
Здравствуйте, игппук, Вы писали:
И>Здравствуйте, Аноним, Вы писали:
А>>Сколько QT стоит? Платная версия для Комерческого использования?
И>1200-1500 евро.
But in general 1xQt Desktop Edition for a single platform will be 930 Euros.
The price for two platforms is 1380 EUR and for three platforms is 1840 EUR per license.
но это только для программы "Qt Small Business Program (SBP)".
Скоро они сделают платформу для ВинСЕ, но это тоже будет как отдельная платформа...
Здравствуйте, Lepsik, Вы писали:
L>Здравствуйте, shvonder, Вы писали:
L>>>проще всего на Borland Builder S>>Вы невнимательно прочитали требования автора вопроса: O>>>>Условие: язык программирования C++. S>>
L>вам наверное следует знать что Borland Builder C++ отвечает этим требованиям
Особенно борландовские расширения, которые сделали из c+= некое подобие дэлфи. Неужели в с++ есть свойства (у классов)?