LINUX.ORG.RU

Что менее монструозное в 2020 как библиотека: Qt или GTK для C++ разработки чисто под linux?

 


3

4

Есть старый C++ GUI сделанный в 2012. Собирался под win и linux. Поддерживать win надоело, сам её не юзаю, да и мастдай уже произошёл. Qt была выбрана по совету знакомых как супермегапростая штука. Хотя юзал из всего набора минимум - окна, кнопки и иконки.

Глядя на сегодняшний мир всяких убунт, мы видим что GTK как-то более распространён (или так только кажется)? Никакого Qt в базовых интерфейсах, никаких KDE и прочего говнища.

Гуй требует переработки, код написан слишком давно, выглядит лохмато, без современных стандартов и т.п. Всё равно много перекапывать.

Так чё, на GTK всё переписать, чтобы быть в тренде и меньше гимора в дальнейшем? К тому же, никогда не нравились всякие эти ненативные приблуды в Qt вроде MOC или как там его. Хочется что-то ламоповое без cmake, минималистичное, быстрое, современное и самое трендовое. Поддержики всякого JS-кода в интерфейсах, звука, воспроизведения видосов не требуется (есть вывод звука, но там на ALSA всё руками сделано по-пацански).



Последнее исправление: igloev (всего исправлений: 2)

Ответ на: комментарий от hobbit

Диванный теоретик. Но qmake же реально ничего серьезного не решает, это даже не уровень метапрог-скв. А недостатки свои имеет.

stasolog
()
Последнее исправление: stasolog (всего исправлений: 1)
Ответ на: комментарий от fsb4000

windeployqt копипастит либы по списку. Там половина не используется.

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

это даже не уровень метапрог-скв

Так это и не СКВ, это система сборки. Не самая худшая. Для Qt-проектов — куда менее многословная, чем cmake тот же.

qmake же реально ничего серьезного не решает

У неё очень простая задача: из файла проекта человекочитаемого формата сделать файл для make. Всё. С этой задачей она справляется. Да, есть недостатки, но их вполне можно было бы решить эволюционно.

hobbit ★★★★★
()

@igloev: статическая сборка моего DoubleContact под win32 с Qt4 занимает порядка 11 Мб. Это всё в одном exe-файле, там и сама программа, и необходимые ей модули Qt.

С Qt5 несколько побольше, если не ошибаюсь - примерно в полтора раза (делал, но файла сейчас под рукой нет).

Под линукс статических сборок не делал, только DEB/RPM с использованием системной Qt. Но планирую в одной из следующих версиях добавить и статику, у людей должен быть выбор. Я не думаю, что объём будет разительно отличаться (с поправкой на то, что там, конечно, будет 64-разрядная сборка).

Если это монструозность — ну не знаю, по-моему, сейчас даже для Raspberry Pi такие объёмы не проблема.

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

поддерживаю

однако, ТС следует иметь в виду, что gtk - чисто гуй, а Qt - фраемворк общего назначения. А ещё Qt умеет в андроид.

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

У Qt есть ламповый qmake. :)

Это в котором захардкожен единственно верный стиль кодирования?

target 
{
    # ОШИБКА 
}

target {
    # ТАК НОРМАЛЬНО
}

qmake жуткий, CMake – полное говно, Qbs был бы отличным вариантом решения проблем, но его закопали.

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

Да-да, я и писал, что проблемы есть. Но я не верю, что эту проблему нельзя исправить, пропатчив qmake. Тут главное желание.

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

Смысл у QMake не такой уж и большой, учитывая то, что это просто генератор Makefile’s, которые обрабатываются тормозным make у которого извечные проблемы с многопоточной сборкой.

Тот же CMake выглядит куда как интереснее, учитывая его возможность генерировать файлы Ninja или проекты под различные IDE.

Но Qbs был интереснее, помимо того, что он сам умел собирать код, для него ещё имелись и различные генераторы проектных файлов. Ну и чистый, приятный декларативный синтаксис подобный QML тоже преимущество, после него на угрёбищное говноедство вроде CMakeLists.txt физически противно смотреть.

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

статическая сборка моего DoubleContact под win32 с Qt4 занимает порядка 11 Мб. Это всё в одном exe-файле, там и сама программа, и необходимые ей модули Qt.

Я когда-то очень-очень давно ещё во времена выхода первых версий Qt 4 с помощью утилиты qconfig (не путать с qtconfig) выкидывал из Qt кучу барахла и собирал статические сборки своей программки под Windows, которые весили смешные 800-900 КБ.

https://doc.qt.io/archives/qt-4.8/fine-tuning-features.html

https://doc.qt.io/archives/qt-4.8/images/qt-embedded-qconfigtool.png

Потом про этот qconfig все забыли, а года три назад уже в Qt 5, его снова откопали, прилепили к нему модный-молодёжный JSON и стали продавать как Qt Lite, а сам qconfig удалили.

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

windeployqt

юзай статическую сборку

anonymous
()
Ответ на: комментарий от EXL

или проекты под различные IDE

Еще бы они получались валидными.

anonymous
()
Ответ на: комментарий от next_time

Нет. Не так.

ТС следует иметь в виду, что gtk - чисто гуй, а Qt - фраемворк общего назначения.

ТС надо понимать что Вы несёте ахинею. Видимо, Вы не в курсе что в GTK было бы крайне правильно использовать GLib. В качестве домашнего задания я поручаю посмотреть что там в наборе. Приличия ради хотя бы Вику откройте и удивитесь.

В том-то и прелесть GTK, что можно использовать g_thread, а можно использовать нативные, системные. И зависит это (использование или неиспользование) от контекста задачи и от грамотности погроммиста. Ни кто не навязывает ничего.

А ещё Qt умеет в андроид.

Дабл ять! Попробуйте разок ручками поработать с Qt в ведре, потом об ощущениях расскажете. Хорошо?

Намекну – пока вы чуть более чем весь этот свой «фреймворк общего назначения» не затяните, не заведётся на ведре Ваш Qt проект. Если уж об «экономичности» софта на ведре, то Qt это вообще последнее о чём имеет смысл вспоминать в приличном обществе. Тут бы лучше было бы NDK, но до него не каждый ведроид-погроммист дорастает. «Слишком сложна»!!!11

anonymous
()
Ответ на: комментарий от hobbit

Ну, положим, я делал.

Ты делал проекты на qmake и cmake или просто потроллить решил?

И могу сказать одно. «Эволюционная цепочка» выглядит следующим образом.

Был make. Им, по очевидным причинам (множество систем, где надо собирать проекты) были недовольны. Родились autotools. Долб… (ну, Вы поняли) посчитали их «слишком сложными». Родился CMake, который ни хрена ни система сборки, а просто генератор makefile (типа, autotools для идиотов). Сборка – всё тот же make. Qt начало метаться – qmake/CMake. В GTK/GNOME остались autotools, но в GNOME3 теперь завезли meson. Всё на питоне, стильно-модно-молодёжно, всё как мы любим. Синтаксис описания сборки упростился. Но по сути всё то же. Правда, говорят об очешуенной скорости meson, но тут всё относительно.

Однако, по сути, нового ни чего изобретено не было. Qmake нужен из-за наркоманских требований к сборке qt-приложений, разве что. «Специфичный», свой такой небанальный путь сборки и деплоя. Сокрыто это в глубинах QtCreator, вот пусть оно там и остаётся. Ни разу не видел чтобы кто-то правил сборку в vim (как те же скрипты для autotools, например).

GTK-приблуды собираются на раз-два и безо всяких извратов. Ах, да… Нужно autotools хотя бы минимально вкуривать. Но там и не всё так сложно.

Сам сижу на autotools и meson (чисто под GNOME3), никуда вставать не собираюсь.

anonymous
()
Ответ на: комментарий от EXL

А , что если библиотека не гноме , а некого adobe который позже начал шухер среди маковедов и подобных вещей , глимписе блек , инверсия цветов srgb cmyk

anonymous
()
Ответ на: комментарий от EXL

Не смотрел Qt так подробно.

Qt кстати зависит от Glib (GNOME lib) абсолютно во всех десктопных Linux-дистрибутивах.

Зачем им эта зависимость не ясно. GLib (по своей сути) это что-то типа stl, но для «чистого» С. Т.е., там некие специфичные типы данных (g_char вместо char и т.д. и т.п.) и всякие-разные наборы абстрактных средств типа тех же g_thread и прочего. Т.е., для linux это дополнительный слой абстракций (расширений) над glibc, т.е. над стандартной библиотекой. Зачем это в qt, где есть всё своё, я даже думать боюсь.

anonymous
()
Ответ на: Нет. Не так. от anonymous

было бы крайне правильно использовать GLib. В качестве домашнего задания я поручаю

а вам в качестве домашнего задания я поручаю сравнить возможности Qt и gtk (вместе с glib) в качестве фраемворков общего назначения

Попробуйте разок ручками поработать с Qt в ведре, потом об ощущениях расскажете

отличные ощущения

весь этот свой «фреймворк общего назначения» не затяните

это не так

next_time ★★★★★
()
Последнее исправление: next_time (всего исправлений: 1)

Возьми что-нибудь легкое на чистых иксах или OpenGL. Потому что ни культяпки, ни говнотыки для разработки вообще не годятся! Абсолютно!!!

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

легкое на чистых иксах

и фейланись на вейланде

или OpenGL

и фейланись одновременно на новых видеокартах, на которых вулкан и на старых, которые OpenGL 4.0 не держат

//Эдуард, залогиньтесь уже

next_time ★★★★★
()
Последнее исправление: next_time (всего исправлений: 1)
Ответ на: комментарий от next_time

И что я должен увидеть?

а вам в качестве домашнего задания я поручаю сравнить возможности Qt и gtk в качестве фраемворков общего назначения

В особенности если учесть что GLib Вы в глаза не видели? Или мне нужно провести сравнение между g_thread и QThread?

Так вот. Да будет Вам известно, но я вполне могу использовать в приложении GTK и нативные треды и gtk-специфичные. GTK изначально обладает модульным построением, в отличие от Qt, которая обзавелась модульностью сравнительно недавно. В третьей или четвёртой, не помню уже, ветке. Но даже сейчас несколько тяжеловато использовать нативные средства ОС. Иначе зачем всё это громадьё кода?

это не так

Для «здравствуй мира», возможно и не так. Что-то сложнее – уже урыдаться, можно.

Видимо да, в Гугле сидят идиоты, зачем-то придумавшие этот самый NDK, который один чёрт понадобится и для проектов на Qt под ведро. Но мыши кололи и плакали, но таки продолжали жрать этот растреклятый кактус… Видимо, нравится безудержный секс с той же отрисовкой интерфейса (про доступ к иным вещам типа датчиков, и не говорим), поэтому и притягивают в проект для ведра Qt.

Вот почему при упоминании Qt для ведра возникают сомнения в адекватности текущей реальности изрекающего эти вещи.

anonymous
()

Qt однозначно. Единственный минус - это коммерция.

baist ★★
()

Не знаю как там оно в потрохах, но как пользователь, я бы сказал спасибо за Qt.

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

и фейланись на вейланде

Дерьмо должно быть в канализации!

и фейланись одновременно на новых видеокартах, на которых вулкан и на старых, которые OpenGL 4.0 не держат

Интересное кино: значит, опенгль на всех них работает нормально, а приложуха - не должна? Ну-ну..

залогиньтесь уже

ЛОР стал клоакой: на фоне дебилов-вантузоидов, поставивших себе бубунту и бегущих сюда решить вопросы, ответы на которые в первой же строке выдачи гугла, нормальных людей уже днем с огнем искать.

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

anonymous
()
Ответ на: комментарий от hateyoufeel

Каково это в 2000 году жить?

Я задавал этот вопрос когда запустил рабочий пример от самих разработчиков Electron. с гитхаба скачал.

Современный веб - это картинки и текст. Facebook и Instagram не даст соврать.

Мир С/C++ давно себе открыли VR и 3D. На секунду в 2000 уже пилили движки на базе OpenGL(когда он там вышел) Веб-макаки только узнали о WebGL в 2011 году. А теперь мы можем выводить чайник на сайте - ВОТ ЭТА ПРОГРЕСС В 2020 году.

Зачем надо было убивать флеш ради этого говна не понятно.

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

Зачем надо было убивать флеш ради этого говна не понятно.

Флешь - дырявая быдлотехнология. И она должна была быть убита!

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

Сука, оно жрать ещё больше.

Пруфы в студию.

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

Чего не скажешь сейчас?! Антивирусник для браузера - это нечто!

baist ★★
()

То чувство когда ты в живую разбирал и использовал GTK, Qt, Wayland и читаешь комменты и просто ржешь в голос.

Одни сплошные ванги гадающие на кофейной гуще. Кто-то не смог Hello World скомпилировать для Qt и уже делаются масштабные выводы мол «говно это я пробывал».

Самое обидное везде так. Ни пруфов, ни аргументов четких, ни почитать книжки, не разобраться самому - будем тупыми. Самое большая концетрация кристально чистых идиотов это на YouTube. Первое место. Почитаешь комменты можно бошку разбить от фейспалма.

Одни мифы, одни стереотипы. «Qt такой монструзный и тормознутый». АГА! А вот GTK с его лютым dependency hell и его ручным ООП - прям образец минимальности.

Просто деградация IT сообщества, одни «умники вокруг».

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

Культяпки нельзя использовать, т.к. это - жирный монстр. Говнотык тоже недалеко ушел: одно лишь то, что в его основе glib, заставляет сразу закопать это дерьмо!

Не существует вменяемых тулзов для разработки GUI! И с этим надо смириться. Всякие легковесные имеют стадию разработки альфа или пре-альфа. А остальное…

anonymous
()

На чём угодно, отдели морду от логики. Наверняка гуй не сложный бери с ходу GTK ибо это дефолт. Потом можно будет сделать морду ещё и на Qt

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от EXL

Но Qbs был интереснее, помимо того, что он сам умел собирать код Что за пессимизм. Qbs никуда не пропал. Его продолжают развивать.

anonymous
()

Пиши на чем знаешь.

xDShot ★★★★★
()

Глядя на сегодняшний мир всяких убунт, мы видим что GTK как-то более распространён

Глядя на сегодняшний мир, мы видим, что кроме Linux-дистрибутивов есть также иные операционные системы. Как для них будет осуществляться сборка и распространение твоего ПО?

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

Мир С/C++ давно себе открыли VR и 3D.

Прости, ты про VRML слышал? С другой стороны, трёхмерные интерфейсы не взлетели (если не считать игр), и, наверное, это к лучшему.

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

Оверхед в виде пердолинга через HTML никому не нужен.

Никто голый HTML давно не пердолит. Есть React и прочие фреймворки для этого.

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