LINUX.ORG.RU

[c++] А есть ли какая альтернатива Qt?

 


0

3

Судя по последним течениям в рассылке, из Qt упорно делают JS-фреймворк. Поэтому назревает вопрос о поиске альтернатив для будущих разработок на языке c++. Пока только нашёл wxWidgets, gtkmm/glibmm. По потреблению памяти они явно превосходят текущий Qt, да и api у них какой-то страшный, ИМХО. Посмотрел ещё на boost. В принципе, сойдёт, но библиотек для гуя там нет. Есть ещё отдельно библиотеки виджетов fltk, fox. Но что-то они уж совсем малофункциональные.

Интересно, есть ли ещё что-нибудь в этом плане, чтобы можно было полноценно заменить Qt?

Windows Forms, Visual C++ =) Вполне достойные штуки. Правда, только винды.

Ну а так что-то в голову ничего и не приходит. Походу нет такой замены.

Zhbert ★★★★★
()

Судя по последним течениям в рассылке, из Qt упорно делают JS-фреймворк.

4.2

Посмотрел ещё на boost.

совсем не то

Интересно, есть ли ещё что-нибудь в этом плане, чтобы можно было полноценно заменить Qt?

для С++ - нет, а вообще Gtk

shty ★★★★★
()

Интересно, есть ли ещё что-нибудь в этом плане, чтобы можно было полноценно заменить Qt?

Его слишком раздули, что бы чем-то одним заменить. Хотя может Mono?

AlexVR ★★★★★
()
Ответ на: комментарий от truetester

1. обсуждают, релиза ещё нет
2. «JS engine in QtCore», и что?
3. Qt останется С++ фреймворком
3. что не так с js?

shty ★★★★★
()
Ответ на: комментарий от AlexVR

>Его слишком раздули, что бы чем-то одним заменить.

А я и не говорю о едином решении. Вполне устроят отдельные либы. По крайней мере если гуя нет, то легко можно набрать нужный функционал.

Хотя может Mono?

Жирновато будет, да и не c++...

truetester
() автор топика
Ответ на: комментарий от shty

2. «JS engine in QtCore», и что? 3. Qt останется С++ фреймворком

В этих фразах есть явное противоречие.

3. что не так с js?

А, собственно, при чём тут js? Почему сразу не питон?

truetester
() автор топика
Ответ на: комментарий от truetester

2. «JS engine in QtCore», и что? 3. Qt останется С++ фреймворком

В этих фразах есть явное противоречие.

ну так раскрой его, я никакого противоречия не вижу

shty ★★★★★
()
Ответ на: комментарий от staseg

>XUL

Судя по файерфоксу, gtkmm/glibmm менее прожорливо будет.

truetester
() автор топика

И правильно делают, на JS гуй удобнее описывать и меньше возможностей себе в ногу выстрелить. Плюс ежели не хочется, то пиши весь гуй на с++ по старинке.

Gorthauer ★★★★★
()

Да никому сейчас десктопные приложения не нужны. А кому нужны вытерпят и кюте и все остальное.

dizza ★★★★★
()
Ответ на: комментарий от shty

>офисный планктон, такой важный

Тебя это сильно беспокоит?

truetester
() автор топика

> полноценно заменить Qt

Полноценно никак, даже если говорить только о GUI. На мой взгляд ближе всего wxWidgets (особенно если брать в расчет кроссплатформенность). В принципе больше и ничего нет.

Amp ★★★
()
Ответ на: комментарий от Gorthauer

Если не ошибаюсь, тут конкурирующая контора нарисовалась. Ладно, отвечу.

на JS гуй удобнее описывать и меньше возможностей себе в ногу выстрелить.

Думаю, на питоне таких возможностей ещё меньше. Но речь про c++.

Плюс ежели не хочется, то пиши весь гуй на с++ по старинке.

Так бессмысленно уже. Тащить с собой огромную неподдерживаемую библиотеку.

truetester
() автор топика
Ответ на: комментарий от truetester

Нет, писать на новом SceneGraph фреймворке. Ты не забывай, все эти qml обьекты это прежде всего С++ обьекты и спокойно юзаются вне js!

Питон в сравнении с JS фееричный тормоз.

Gorthauer ★★★★★
()
Ответ на: комментарий от Amp

>На мой взгляд ближе всего wxWidgets (особенно если брать в расчет кроссплатформенность). В принципе больше и ничего нет.

Пока тестил, оверхед относительно Qt имеет место быть. Может под Windows оно лучше в плане зависимостей? А то под Linux тащит gtk со всем зоопарком в виде glib/pango..

truetester
() автор топика
Ответ на: комментарий от truetester

> Пока тестил, оверхед относительно Qt имеет место быть. Может под Windows оно лучше в плане зависимостей? А то под Linux тащит gtk со всем зоопарком в виде glib/pango..

под Windows лучше, а вот на маке это неюзабельное говно, которое одинаково хорошо не умеет ни carbon ни cocoa

aho
()
Ответ на: комментарий от Gorthauer

>Нет, писать на новом SceneGraph фреймворке.

Так.., а там виджеты хоть есть? А то мне тут подсказывают, что это что-то совсем уж низкоорувневое и использовать его можно только через QtDeclarative со всем зоопарком. Кроме того, необходимость OpenGl ES 2.0 совсем не радует, особенно на встроенной интеловской видяхе.

truetester
() автор топика
Ответ на: комментарий от Gorthauer

>Питон в сравнении с JS фееричный тормоз.

Но это не значит, что надо выкручивать руки в сторону последнего. Да и вообще, нокиевцы вроде сами говорили, что в qml нет тяжёлых вычислений.

truetester
() автор топика
Ответ на: комментарий от Deleted

>Юзайте Qt. Они говорили, что C++ останется навсегда.

Останется, но в какой роли? Плугины для бровзера я тоже могу писать на c++, если приспичит.

truetester
() автор топика
Ответ на: комментарий от truetester

Так.., а там виджеты хоть есть? А то мне тут подсказывают, что это что-то совсем уж низкоорувневое и использовать его можно только через QtDeclarative со всем зоопарком.

По аналогии с QGraphicsScene, но по мне так удобнее обьекты друг на друга таки через qml накручивать, а не трахаться с их набиванием вручную.

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

>qml для описания гуя гораздо красивше выглядит нежели Питон.

Это относительно. По мне, он выглядит также ужасно, как html вперемешку с js или php. Но речь идёт о другом. Если мы говорим о разметке, то js в qml можно заменить на python (или любой другой динамический язык). Но, видимо, выкрутить руки проще. Это меня и удручает.

truetester
() автор топика
Ответ на: комментарий от truetester

C++ для гуя куда ужаснее выглядит и ничего, пишут же. Какие динамические языки у нас кроме js держат систему метатипов Qtшную? Для PySide или PyQt я уже могу спокойно создавать на С++ обьекты? Js не просто так туда гвоздями прибит. Да и по сути это всё равно скорее клей для плюсовых обьектов. И вообще, пусть лучше так будет, чем зоопарк динамических языков.

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

>По аналогии с QGraphicsScene, но по мне так удобнее обьекты друг на друга таки через qml накручивать, а не трахаться с их набиванием вручную.

Ну не знаю. Пока меня запарили findChild-ы, чтобы хоть как-то достучаться до объектов из c++. Впрочем, и использование setProperty() на каждый чих тоже не добавляет простоты. Ошибся в тексте - компилятор проглотил. Не говоря уж про такие геморройные вещи, как QDeclarativeImageProvider и динамические интерфейсы. Не зря в доках советуют использовать js для минимизации взаимодействий между c++-кодом и qml.

truetester
() автор топика
Ответ на: комментарий от Gorthauer

>C++ для гуя куда ужаснее выглядит и ничего, пишут же.

Для гуя он выглядит ровно также, как и для js и даже python. Разметка гуёв в этих языках не предусмотрена, впрочем, они для этого и не создавались.

truetester
() автор топика

>Судя по последним течениям в рассылке, из Qt упорно делают JS-фреймворк.

Тьяго не даст, он с нами ;)

annulen ★★★★★
()
Ответ на: комментарий от Gorthauer

>Для PySide или PyQt я уже могу спокойно создавать на С++ обьекты?

Тоже самое могу сказать и про JS+Qml. Мало того, необходимо наследоваться от QOBject, так ещё и функции помечать как Q_INVOKABLE. Такое можно навернуть и для питона, если сильно захотеть.

truetester
() автор топика
Ответ на: комментарий от annulen

>Qt 4

Да, я тоже надеюсь, что кто-нибудь его форкнет. Но пока на горизонте не видно крупных игроков. Кроме того, в 4.7.4 обнаружилось множество регрессий. Пришлось откатываться на 4.7.3

truetester
() автор топика
Ответ на: комментарий от Gorthauer

Для PyQt C++ объекты делаются тривиально с помощью утилиты sip. Как с этим обстоят дела в PySide не в курсе.

Reset ★★★★★
()
Ответ на: комментарий от annulen

>Qt 4

Да, я тоже надеюсь, что кто-нибудь его форкнет. Но пока на горизонте не видно крупных игроков. Кроме того, в 4.7.4 обнаружилось множество регрессий. Пришлось откатываться на 4.7.3

truetester
() автор топика
Ответ на: комментарий от Reset

>Для PyQt C++ объекты делаются тривиально с помощью утилиты sip

С qml это будет проблематично. Придётся, наверное, свой Declarative написать или что-то в этом роде, рисующее через scengraph. Хотя вроде собирались делать поддержку qml+python с трансляцией в qml+js.. В рассылке PyQt пробегало.

truetester
() автор топика

Блин, ну прикрутят JS к QtCore, тебе-то какое дело? Не хочешь - не используй.

Развел тут нытик-тред.

Kosyak ★★★★
()
Ответ на: комментарий от KblCb

Может мне кто-нибудь внятно описать на что похожа архитектура Qt5

на Qt4

Four big architectural changes:

  • Re-architecture our graphics stack - We will put Qt Quick and the QML Scenegraph into the center of our new graphics architecture. QPainter will still be available and is very useful for many things, but it won’t be used for the main user interface. Qt will require OpenGL (ES) 2.0 to work. QWidgets will be layered on top of the scene graph (not the scene graph on top of QWidgets as is currently done with Qt 4).
  • Base all Qt ports on Lighthouse - The Lighthouse project was started with the goal of providing a better way to abstract the window system integration than we currently are using. It’s now reaching maturity with Qt 4.8, and we intend on using it exclusively for all Qt ports in Qt 5.0.
  • Modular repository structure - A lot of this work has been done over the last weeks and you can see the results in the new modular Qt repositories. The modularization of Qt will facilitate and speed up the possibility to integrate contributions to Qt.
  • Separate all QWidget related functionality into its own library - While the QWidget based classes are extremely important for existing applications, we are, over time, going to move to a model where all UIs are being done in QML. Separating the QWidget based functionality into its own library is therefore a good measure to achieve a clean architecture in Qt 5 in the long term.
shty ★★★★★
()

Да ладно вам, господа хорошие... Последнее десятилетие показало что программировать интерфейсы по принципу «разметка»/«оформление»/«клиентский код»/«серверный код» намного удобнее чем с помощью классов в приплюснутом коде. И набившая оскомину MVC прекрасно встраивается в такой интерфейс, и командную работу проще организовать, и прототипирование и много других вещей.... «Ajax-Rich-Applications» / «Adobe AIR»/ «QML»... Нокиевцы не первые, это тренд.

dmitryalexeeff
()
Ответ на: комментарий от truetester

Ты думаешь неправильно. Вероятно у тебя битые сегменты в мозге есть.
Ну и модуль ЧСВ надо заменить на исправный, а то этот что-то зашкаливает.

Jetty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.