Russian Qt Forum

Программирование => Общий => Тема начата: Lagovas от Август 07, 2011, 08:50



Название: Что используют для написания GUI
Отправлено: Lagovas от Август 07, 2011, 08:50
В общем интересно, что используют для написания интерфейса. Интересует как платформонезависимые так и зависимые. Просто как то читал мысли про то что кьюте не вечно, что чаще всего достаточно писать и конкретно под определенную платформу и т.п. А я как таково кроме кьюте, винформс и ничего не знаю. Знаю есть еще винАпи и еще какая то либа виндовая, то ли WPF то ли еще что то. А под линь кроме кьюте хз даже.
В общем прошу отписаться какие есть средства, под какую платформу, сложность их освоения, их плюсы и минусы. Заранее благодарен.


Название: Re: Что используют для написания GUI
Отправлено: maint от Август 07, 2011, 09:05
WinAPI его и QT использует. Из кросплатформенных WXWidget, GTK. GTK только под mingw в винде. WXWidget - делает вид, что он местный. Под виндой использует WinAPI под линухом чаще всего GTK.


Название: Re: Что используют для написания GUI
Отправлено: Lagovas от Август 07, 2011, 09:09
Мне одно имя мало что говорит, расскажи пожалуйста сложность программирования на них. Из того, с чем могу сравнить, это Qt и WinForms. Винформс самый простой способ написания гуи в винде, потом едет какая то WPF или WCF, а потом винАПИ, которая самая сложная и безсмысленная в плане программирования, из за того что очень много писать нужно для элементарных вещей, так ли это?


Название: Re: Что используют для написания GUI
Отправлено: maint от Август 07, 2011, 09:30
WinAPI не самый бессмысленный, а самый экономичный с точки зрения потребления ресурсов. WxWidget серьезная библиотека на плюсах. Своей среды разработки (вроде qtcreator) нет. Кол-во виджетов для разработки, сравнимо с QT. Где то опережает, где то отстаёт (базы только через ODBC, например).  GTK на чистом Си, без плюсов. Среды разработки прикручиваются.  Да популярно этих статей в инете, как грязи. Пересказывать бессмысленно


Название: Re: Что используют для написания GUI
Отправлено: Lagovas от Август 07, 2011, 09:36
Ну про ресурсы то ясно, а вот стоит ли овчинка выделки? Часто ли используют чистый вин апи? Кажись там тысячи процедур различных. Тяжело ли с ним работать? Кстати, а в линуксе нету своего апи для графики? Или там только отдельные либы типа gtk, qt? Если есть, то пишут ли? Что то не слышал никогда, хотя с чем то ведь должны работать куте и гтк.


Название: Re: Что используют для написания GUI
Отправлено: maint от Август 07, 2011, 09:58
чистый апи используют часто. Для программ экономящих ресурсы и не испытывающих необходимости в рюшечках. Документация есть, примеров как грязи. Весь MSDN описывает хорошо эти процедуры с примерами.  Классики Петзолд и Рихтер. В инете куча ссылок на книги. Марк Руссинович, известный классик купленный микрософтом использует апи для своих программ.
В линухе свой апи есть. Такого же уровня что и winapi. Документации поменьше, наворотов побольше, т.к xwindow с самого начала позиционировался не только как графический, но и  сетевой. И возраст у него почтенней, чем у виндового интерфейса. Либ как грязи для линуха. Основные qt и gtk. На них написаны KDE (qt), Gnome (gtk), XFCE (gtk) и т.д. Это рабочие места(desktop enveriment). Ну и все программы от библиотек пляшут. От браузеров Firefox - gtk, Opera - qt), до игрушек.


Название: Re: Что используют для написания GUI
Отправлено: Авварон от Август 07, 2011, 19:10
жопера не использует qt, wxwidgets ни разу не выглядят нативно на том же маке и собсно функционал там минимальный; "гтк без плюсов" - все юзают убогий гтк+, к-ый таки с++; да и сам гтк написан в псевдо плюсовом стиле


Название: Re: Что используют для написания GUI
Отправлено: maint от Август 07, 2011, 19:23
для безграмотных балаболок предлагаю ознакомится со ссылкой ftp://ftp.opera.com/pub/opera/linux/1001/final/en/i386/.


Название: Re: Что используют для написания GUI
Отправлено: Авварон от Август 07, 2011, 19:30
для безграмотных балаболок предлагаю ознакомится со ссылкой ftp://ftp.opera.com/pub/opera/linux/1001/final/en/i386/.
чсв не зашкаливает?
2 года назад жопера qt выпиливала http://habrahabr.ru/blogs/opera/79179/
если они оказались такими тупыми что не смогли это за 2 года сделать - я-то тут причем?


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 08, 2011, 17:31
Цитировать
предлагаю ознакомится со ссылкой .
Официальный источник (http://my.opera.com/kilsmo/blog/2008/01/29/opera-is-not-based-on-qt)


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 08, 2011, 17:33
>>"гтк без плюсов" - все юзают убогий гтк+, к-ый таки с++; да и сам гтк написан в псевдо плюсовом стиле
Не понял, всё-таки GTK+ это Си++ или Си?


Название: Re: Что используют для написания GUI
Отправлено: Авварон от Август 08, 2011, 17:39
гтк+ - это плюсовая обертка над сишным гтк, разве нет?


Название: Re: Что используют для написания GUI
Отправлено: Igors от Август 08, 2011, 17:57
В общем интересно, что используют для написания интерфейса. Интересует как платформонезависимые так и зависимые. Просто как то читал мысли про то что кьюте не вечно, что чаще всего достаточно писать и конкретно под определенную платформу и т.п.
Насчет "зависимых" - дело явно тухлое. Платформа может менять свой графический API. На Вындоуз он довольно стабилен, про Линукс ничего не знаю, но вот на Mac OSX "переходики" случаются в среднем раз в 5 лет. При этом учтите что ВСЕ написанные Вами приложения должны быть портированы, просто так на новых версиях ОС они уже не ходят. Это колоссальный геморрой. А с кросс-платформенным фреймворком достаточно залить новую версию, ну перекомпилить, где-то подрихтовать по мелочам - тоже работа, но по сравнению с предыдущим вариантом это курорт. Ну а о поддержке 2 платформ нечего и говорить - без этого сейчас уже как-то "несолидно" :)  Поэтому если так сложилось - то терять время на "зависимые" сейчас уже нет никакого смысла  


Название: Re: Что используют для написания GUI
Отправлено: maint от Август 08, 2011, 18:00
гтк+ - это плюсовая обертка над сишным гтк, разве нет?
http://www.progimp.ru/gimp/inside/gtk/
GTK+ разрабатывается в языке Си, но является объектно-ориентированной. Одной из причин
для выбора этого языка стало желание легко строить интерфейсы и для других популярных языков программирования. В результате, есть возможность использования библиотеки из языков C++, Java, Python, Ruby, Haskell и даже JavaScript.


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 09, 2011, 12:35
>>языке Си, но является объектно-ориентированной.
это как???


Название: Re: Что используют для написания GUI
Отправлено: Пантер от Август 09, 2011, 12:36
>>языке Си, но является объектно-ориентированной.
это как???
Object С?


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 09, 2011, 12:40
>>гтк+ - это плюсовая обертка над сишным гтк, разве нет?
вообще библиотеки с именем "GTK" нет. Есть только "GTK+"

А обёртка Си++ над GTK+ называется gtkmm (http://www.gtkmm.org/en/)


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 09, 2011, 12:40
>>Object С?
в  GTK+ ?
:)


Название: Re: Что используют для написания GUI
Отправлено: Пантер от Август 09, 2011, 13:08
>>Object С?
в  GTK+ ?
:)
Метод Тыка не сработал. :)


Название: Re: Что используют для написания GUI
Отправлено: iroln от Август 09, 2011, 15:05
Цитировать
>>языке Си, но является объектно-ориентированной
это как???
Язык Си не является объектно-ориентированным, но на нём можно писать в объектно-ориентированном стиле, если иметь ООП головного мозга (в хорошем смысле). Создатели GTK+ именно те самые ребята, которые в инструментарии GTK+ используют парадигмы ООП и пишут реализацию на чистом Си. Смотрите GLib, GObject и всё, что имеет отношение к GTK+.

GTK+ в Windows работает не очень хорошо, чего только стоит баг с не работающими горячими клавишами при включенной русской раскладке клавиатуры. Не знаю, в GTK+ 3 он остался? :) А кривые выпадающие списки и не родной внешний вид дополняют картину.

wxWidgets - тулкит, написанный на C++, легковесный, но сильно уступает Qt по возможностям. Использовать его смысла особого не вижу.

WPF - Неимоверно мощная штука от майкрософта, с декларативным программированием и т.п. Такая мощная, что можно 3 года её ковырять, а программы на ней писать так и не научиться. :) Страдает детскими болезнями и багами, а так же страдает от недостатка внимания со стороны программистов, даже самого майкрософта. VisualStudio 10 написана с использованием WPF. Естественно не кроссплатформенная, в Mono никто поддержку WPF делать не собирается пока что.

Если что, я использую Qt. :)


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 09, 2011, 19:06
>>но на нём можно писать в объектно-ориентированном стиле
>>если иметь ООП головного мозга (в хорошем смысле).
Не могу себе представить это.
Приведите банальный пример, на основе этой Cи++ ситуации:
есть SomeButton
Хочу сделать наследника переопределив два виртуальных метода SomeButton::method1(...), SomeButton::method2(...), и создав собственный метод MyButton::myMethod(...)


Название: Re: Что используют для написания GUI
Отправлено: lit-uriy от Август 09, 2011, 19:09
>>wxWidgets ... Использовать его смысла особого не вижу.
Я не знаток MFC, но при беглом рассмотрении, стиль wxWidgets очень сильно напоминает MFC, возможно для тех кто уже привык к MFC это наибыстрейший способ освоить кросс-платформенное программирование.


Название: Re: Что используют для написания GUI
Отправлено: Igors от Август 09, 2011, 19:29
>>но на нём можно писать в объектно-ориентированном стиле
>>если иметь ООП головного мозга (в хорошем смысле).
Не могу себе представить это.
Приведите банальный пример, на основе этой Cи++ ситуации:
есть SomeButton
Хочу сделать наследника переопределив два виртуальных метода SomeButton::method1(...), SomeButton::method2(...), и создав собственный метод MyButton::myMethod(...)
Тоже мне проблема
Код
C++ (Qt)
void Method1( SomeButton * button)
{
 switch (button->mTypeID) {
   case BUTTON_TYPE_1:
    Button1_Method1 ((Button_1 *) button);
    break;
 
   case BUTTON_TYPE_2:
    Button2_Method1 ((Button_2 *) button);
    break;
 ...
}
 
Конечно на плюсах все это удобнее, изящнее, приятнее, в конце-концов просто грамотнее. но суть дела от этого принципиально не меняется. Книжные знания выбрасывается в корзину немедленно как только возникнет первая же необходимость их нарушить  :)