LINUX.ORG.RU

Написать GUI-приложение и не удавиться

 , ,


0

2

Думаю, тема понятна. В 2021 году есть Electron, Qt и GTK. Электрон супер жирный (bloated) и в сообществе не уважается. Qt де-факто только для C++, а C++, как известно, за 35 лет своего существования скатился в большой бак с мусором, который не только не опустошается, но ещё и набивается новыми стандартами; в итоге есть 100500 способов сделать одну вещь. С GTK всё несколько лучше: и биндинги ко многим языкам есть, и стандартных виджетов хватает на «несложные приложения», да он даже под Wayland работает.

Теперь немного предыстории. Полгода назад я пересел на линух с оффтопика. На оффтопике я писал GUI-приложения на C# WPF в Microsoft Visual Studio. WPF - самое то, особенно в VS. И дизайнер есть, и дата-биндинги, и темплейты - всё для быстрой, комфортной разработки. Windows Forms, к слову, я тоже пробовал - всё выглядело достаточно костыльно, мне не зашло. Так вот, с момента перехода на онтопик я так и не написал ни одного GUI-приложения. Всё ощущается настолько неудобным, и, простите, «кривым», что ничего кроме приложений с одной кнопкой написать не получается. Думаю, я не один такой «тупой», хотя, могут же люди делать красивые DE и приложения с богатым интерфейсом. Вопрос: «Как?». Есть ли у меня возможность написать GUI-приложение не с веб-мордой, не с Qt, а с чем-нибудь легковесным, и притом удобным в разработке?

Заранее спасибо за ответы.

P.S. Сейчас максимально удобной кажется связка Glade + Vala, но это максимум Windows Forms, никак не WPF.

Полгода назад я пересел на линух с оффтопика

Не в тему, а из-за любопытства, но зачем?

vvn_black ★★★★★
()

@ХитраяБестия в Linux другой стиль работы …

anonymous
()

Можно проще.

Gnome-builder + Glade + C. Пишу такое. Брат жив, полёт нормальный. В принципе, можно и просто gnome-builder или vim и С. Можно создавать интерфейс прямо в коде, не используя разновидность XML из Glade.

Moisha_Liberman ★★
()

C++, как известно, за 35 лет своего существования скатился в большой бак с мусором, который не только не опустошается, но ещё и набивается новыми стандартами; в итоге есть 100500 способов сделать одну вещь.

Что мешает тебе выбрать обозримое подмножество языка и его использовать? Да, по эстетике к плюсам есть претензии. Но это такая рабочая лошадка, которая везде проедет. И по мне так лучше переизбыток гаечных ключей, чем недостаток.

И да, я топлю за Qt. Мне нравится.

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

А вот за QML спасибо. Хоть раньше и слышал про него, но не особо интересовался, а оказалось, что в связке с каким-нибудь Python вполне себе жизнеспособным выйдет, но всё-таки хочется чего-нибудь нативного.

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

Как это не удивительно, но… Lazarus и pascal - на выходе получается бинарник для Win, Lin и Mac.

Более простого и кроссплатформенного в 2021 году просто не существует, такая вот ирония судьбы.

anonymous
()

Вопрос: «Как?»

Очевидно, им не нужны

И дизайнер есть, и дата-биндинги, и темплейты

Хотите программировать мышкой — это Вам в секту @metaprog, а лучше сразу возвращайтесь на винфак и не мучьтесь.

Можете, впрочем, миру Java дать шанс, на нём десктопную прикладуху под онтопик таки вполне делают.

mertvoprog
()

Гуглите «converter WPF to QT» …

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

Что мешает тебе выбрать обозримое подмножество языка и его использовать?

А вот будут ли другие библиотеки, за исключением Qt, использовать одни и те же способы передачи, например, строк? А массивов? Ведь можно и откровенно сишный код встретить.

Хотя, наверное ещё раз попробую Qt, с каким-нибудь qmake для сборки. Может даже комфортно получится.

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

wxWidgets ещё есть для онтопика. Не рекомендую, а держу в курсе.

ashot ★★★★
()

Биндинги любого языка к tk позволят быстро написать интерфейс.

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

Ваша неправда есть же tcl/tk кросплатформенен и не требует компиляции.

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

проблема использовать в C++ только то, что было в нём раньше?

Проблема в том, что то, что было раньше, осталось в языке и сейчас.

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

за 35 лет своего существования скатился

звучит так, что когда-то он был хорош

xmikex ★★★★
()

Электрон супер жирный (bloated) и в сообществе не уважается

Разделите приложение на клиент-сервер, сервер запускается на конечной машине и электро не нужен.

//а ещё посмотрите на таури

Есть ли у меня возможность написать GUI-приложение не с веб-мордой, не с Qt, а с чем-нибудь легковесным, и притом удобным в разработке?

Определите легковесность. Авалония, маюай, уно легковесны?

Совсем забыл, ещё есть https://lvgl.io/, должна быть легковесной.

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

Так вот, с момента перехода на онтопик я так и не написал ни одного GUI-приложения.

Я тоже. На онтопике 15 лет, и как-то не комплексую из-за этого.

Есть ли у меня возможность написать GUI-приложение не с веб-мордой, не с Qt, а с чем-нибудь легковесным, и притом удобным в разработке?

Говорят, flutter - будущее кроссплатформенных гуёв. Попробуй, расскажешь потом, как оно.

Laz ★★★★★
()

Думаю, sixtyfps отлично подойдёт.

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

GUI-приложения на C# WPF в Microsoft Visual Studio. WPF - самое то, особенно в VS. И дизайнер есть

JavaFX посмотри

anonymous
()

Можно с помощью sciter, например.

mydibyje ★★★
()

Сейчас максимально удобной кажется связка Glade + Vala, но это максимум Windows Forms, никак не WPF.

А каких именно возможностей не хватает? А то попытка мерять кроссплатформенный тулкит в попугаях виндовых это как-то неинформативно.

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

А может вместо разведения срачей вы попробуете написать простейшие приложения на кандидатах, сравнив опытным путём ? По опыту в зависимости от ситуции рекомендовал бы Qt и FLTK.

AKonia ★★
()

Электрон супер жирный (bloated) и в сообществе не уважается

Не забудь что он ещё и не переносим.

а C++, как известно, за 35 лет своего существования скатился в большой бак с мусором, который не только не опустошается, но ещё и набивается новыми стандартами; в итоге есть 100500 способов сделать одну вещь

Во-первых, это справедливо для всех языков (даже для питона где наличие одного способа сделать одну вещь - официальный путь развития), во-вторых, тебе не нужно знать все 100500 способов, а нужно знать только актуальный. В этом смысле язык постоянно становится меньше и проще.

Кроме того, Qt это не просто GUI тулкит, а фреймворк, вещь в себе. Можно считать что это и не C++ вовсе, писать исключительно на Qt и не ведать вообще никаких плюсовых заморочек.

С GTK всё несколько лучше: и биндинги ко многим языкам есть, и стандартных виджетов хватает на «несложные приложения», да он даже под Wayland работает.

Это какое-то лживое заявление после выпада в сторону Qt, поскольку у Qt тоже есть биндинги ко многим языкам, он тоже работает под Wayland и у него тоже навалом виджетов.

Есть ли у меня возможность написать GUI-приложение не с веб-мордой, не с Qt, а с чем-нибудь легковесным, и притом удобным в разработке?

Ничего не знаю про виндовую парашу, но у Qt возможностей уйма, есть и designer для GUI формошлёпства, и возможность писать GUI исключительно кодом, и quick где вообще всё модно-молодёжно и можно парой строк сделать адаптивный интерфейс под любые устройства с красивыми анимациями.

P.S. Сейчас максимально удобной кажется связка Glade + Vala, но это максимум Windows Forms, никак не WPF.

Ну так бери свою валу, зачем ты сюда пришёл, если к Qt настроен негативно, а кроме GTK и Qt ничего по сути и нет?

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

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

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

Тогда уж FOX Toolkit взять, там есть какая-никакая архитектура и кроссплатформа, при этом шустроты хоть отбавляй.

FLTK сборник костылей с рандомными методами в классах.

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

А мне и не нужна кроссплатформа. Мне только под линух нужно.

Единственная причина, почему не смотреть flutter - кроссплатформенность? Думаю, можно написать модуль, который будет валить приложение, если его запускают на windows или каком-нибудь iOS. А в остальном как?

Laz ★★★★★
()

Qt де-факто только для C++

Здрасте, я ваша тётя! А Python? А остальные байндинги?

а C++, как известно, за 35 лет своего существования скатился в большой бак с мусором, который не только не опустошается, но ещё и набивается новыми стандартами; в итоге есть 100500 способов сделать одну вещь.

Не можешь выбрать, что ли?

С GTK всё несколько лучше: и биндинги ко многим языкам есть, и стандартных виджетов хватает на «несложные приложения», да он даже под Wayland работает.

Зато он на С, поэтому без байндингов хотя бы для С++ крайне неудобен. Плюс, крайне паршиво на "оффтопике" заводится.

Есть ли у меня возможность написать GUI-приложение не с веб-мордой, не с Qt, а с чем-нибудь легковесным, и притом удобным в разработке?

Если хочешь и дальше на C#, есть Avalonia.

Можешь также обмазаться байндингами и писать что на GTK, что на Qt, у обоих тулкитов их куча, плюс есть "дезигнеры", не пропадёшь.

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

Да, мешает все время шальная мыслишка, что есть нормальные ЯП.

t184256 ★★★★★
()

Для GUI самый удобный вариант PyQt в связке с QML, так как на плюсах вместо того, чтобы писать приложение, придется следить как бы чего не то не случилось.

anonymous
()

На оффтопике я писал GUI-приложения на C# WPF

ну и возьми avalonia, оно как раз мимикрирует под WPF

есть еще uno.platform - это WinUI

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

Qt тоже есть биндинги ко многим языкам

Ко многим - это только к питону? Смешно.

он тоже работает под Wayland

Ага, только вот пользователи сносят wayland бекенд чтобы приложения работали через Xwayland. По отзывам, пользоваться Qt нативно под wayland невозможно.

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

Потому что приходится городить "стонадцать" конструктов там, где на том же С++ можно было бы обойтись парой библиотечных функций/классов.

Korchevatel ★★★★★
()

в итоге есть 100500 способов сделать одну вещь.

Не стыдно своё неосиляторство на публике демонстрировать?

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

Мне только под линух нужно.

Покажи свой git. Если это значимо, местный люд обязательно поможет.

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