LINUX.ORG.RU

На чем сейчас делать GUI?

 , ,


0

7

Под виндой все просто. Есть C# и .Net, работает под все платформы начиная с Windows XP, мое приложение работает под Windows Vista из коробки.

Хочу перенести приложение под Linux. Так как кода немного (приложение графическая утилита), тащить библиотеку mono не вариант.

Можно портировать на C++ или на Java (желательно), но какую взять библиотеку (точно не Qt), чтобы в GTK приложение не выглядело странно?

Производительности C# хватает с головой, плюс есть работа с сетью, поэтому Java тут выглядит предпочтительнее, что под нее есть, из живого кроме JavaFX и Swing. А если ничего нет, то что толкового и живого есть в C++?


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

Пока у Linux не будет единого графического тулкита, он так и будет ковылять в пределах 0.75% на десктопе.

Ну тау Fedora как раз в этом направлении движется - Gnome OS.

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

На оффтопике есть cleansheet тема, добавляющая нэйтивности.

Shadow ★★★★★
()

Gambas или Lasarus еще не советовали?

Deleted
()

IUP из того же университета, в котором пишут Lua.

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

Да, судя по всему, в IDEA используется обычный Swing и обычное JDK, т.е. непатченные ни Swing, ни JDK. Откуда такая странная идея? Просто JetBrains молодцы, что сделали красивый и удобный GUI.

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

У меня есть опыт использования Swing и SWT. Был период, когда SWT меня вдохновляло, но сейчас склоняюсь к тому, что я бы в своих проектах стал использовать Swing, а не SWT.

Говоря о псевдонативности компонентов SWT, они такие же нативные как в любимом тобою Qt. Чуть вышел за ограду, пиши-пропало. Никакой нативности. Она присутствует только в простых случаях, что, впрочем, уже хорошо. Как и в Qt, да и, вообще, во всех «кроссплатформенных» тулкитах.

Если заниматься перфекционизмом, то ни Qt, ни SWT никуда не годятся на macOS к примеру. Только далеко не всегда нужен этот перфекционизм. Хочешь, чтобы выглядело нативно, то тогда используй Cocoa, GTK и MFC / WPF / Metro.

Поэтому советую выбирать между C++ Qt и Java Swing, или возьми LispWorks CAPI, если твоя душа расположена к лиспу ;)

dave ★★★★★
()

чтобы в GTK приложение не выглядело странно?

Очевидно, GTK+

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

Тогда иди в школу. При всей моей неприязни к Qt, удобнее чем она (особенно в плане рисования формы мышкой) в Linux на крестах GUI нет.

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

Fedora !== All Linux

Fedora and other Linux based derivatives

anonymous
()

но какую взять библиотеку (точно не Qt)
точно не Qt

Странный ты..

но какую взять библиотеку (точно не Qt), чтобы в GTK приложение не выглядело странно

GTK3+ </thread>

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

Swing, вообще-то, сам основан на AWT. IDEA использует Swing

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

Да, судя по всему, в IDEA используется обычный Swing и обычное JDK, т.е. непатченные ни Swing, ни JDK. Откуда такая странная идея?

Может со страницы intellij-support:

Starting from IntelliJ IDEA 2016 and the most recent versions of the lightweight IDEs, we are bundling custom JRE with Linux distributions, just like we've been doing for Mac. Our custom JRE is based on OpenJDK and includes the most up to date fixes to provide better user experience on Linux (like font rendering improvements and HiDPI support).

Кстати её можно использовать и против любого другого java приложения, чем я и пользуюсь, для того чтоб в netbeans и freemind шрифты выглядели приятно.

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

JRE весит в разы больше электрона.

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

То есть ты до сих пор, после всех ответов, так ничего и не выбрал? Под кресты из живого не-qt есть разве что gtkmm, который, разумеется, хорошо выглядит в gtk-среде, но плохо (на самом деле, конечно, как настроишь, но у большинства почему-то плохо) в каких-нибудь кедах.

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

Я пока остановился на SWT для себя. Подкупило, что выглядит хорошо в GTK среде, да и Java я знаю.

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

JavaFX бери и не парься, работать будет не хуже C#/WPF ;)

Так же сразу бери Kotlin + TornadoFX, на джаве в 2017 писать уже не модно, а учитывая что ты шарпист то в котлине будешь как дома (и даже лучше)

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

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

Ява - тоже вариант. Но придётся всё переписывать (как и в случае с си).

QT и кеды - не одно и то же, поэтому если последние не нравятся, это не повод отказываться от первого. Из распространённых кроссплатформенных гуишных библиотек для си++ QT - самая продвинутая. У неё только 2 недостатка:

1. Необходимость использовать плюсы (просто си не годится).

2. Если код проприетарный, то QT тоже нельзя использовать (или надо покупать платную версию). LGPL, насколько я знаю, QT не поддерживает.

Ну и ещё относительная «тяжесть» по сравнению с gtk. Но в любом случае она не тяжелее, чем дот.нет или ява.

Но если не подходит QT, и хочется использовать си/си++, то остаётся только GTK. Есть, конечно, и другие либы, но они либо очень слабо поддерживаются, либо чаще вообще не поддерживаются.

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

Хочется их сделать большее, но нет нормальных тулкитов, которые работают везде.

Нет, это ты их стрательно пытаешься в упор не замечать, начиная с ОП.

hobbit ★★★★★
()

Если небольшая утилита, то Lazarus, умеет и qt и gtk, переносим

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

Я даже не хочу придираться, к тому, что ты вместо Qt пишешь QT (т.е. QuickTime). Но вот это...

2. Если код проприетарный, то QT тоже нельзя использовать (или надо покупать платную версию). LGPL, насколько я знаю, QT не поддерживает.

Вот ты скажи, ты где эту ахинею вычитал? Ничего лично против тебя - но просто на ЛОРе я уже наверное в пятый или шестой раз от разных людей читаю эту белиберду, написанную с убийственно серьёзным видом.

У Qt есть как коммерческая редакция, так и LGPL. И последнюю вполне можно использовать для проприетарных проектов, только надо знать накладываемые ею ограничения. Если ты патчишь саму Qt (чем очень мало кто занимается, и вряд ли этим хочет заниматься ТС), патчи тоже должны иметь лицензию LGPL - это во-первых. Если ты хочешь статически компоновать Qt с закрытым кодом, ты должен дать пользователю своего продукта возможность использовать другую версию Qt (например, предоставив объектные файлы) - это во-вторых. То есть ограничения, касающиеся, дай бог, половины процента разработчиков, и как раз для этой половины процента и нужна коммерческая версия. Всем остальным хватит за глаза LGPLной.

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

2. Если код проприетарный, то QT тоже нельзя использовать (или надо покупать платную версию). LGPL, насколько я знаю, QT не поддерживает.

Зависит от модулей. В основном можно линковать динамически и в коммерческих продуктах.

Лицензия
Qt Open-Source

Изначально Qt создавался как программное обеспечение с открытым исходным кодом. Поддерживая концепцию open-source проекта, The Qt Company предоставляет возможность использования открытой лицензии, в рамках которой некоторые модули доступны под LGPLv2.1, LGPLv3/GPLv3, другие – только под LGPLv3.

Из из FAQ

3.5. Can I use the Community open source version to develop my commercial product?

It depends on how you license and distribute your product. The open source version of Qt is mainly distributed under the LGPL, version 3 and GPLv2/v3. You will need to fulfill the license obligations for these licenses when using Qt in your product.

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

Другие Qt, но он нормально только в KDE выглядит

Даже интересно стало, в чём, кроме KDE, ты смотрел, и какие у тебя критерии нормальности. Я свой хобби-проект на Qt собираю для Linux, Windows и macOS, вполне нормально (хотя если ты запускал Qt 4.6 на Windows 8, то выглядит архаичненько, да, 4.8, не говоря уж о 5.x, уже вполне нормально). Не говоря уж о том, что для особо привередливых там всё настраивается через темы.

Qt я не терплю, потому что это KDE. Все. KDE == Qt.

А, это религия. Ну повторяй чаще, будешь верить сильнее.

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

Скажите это владельцам ноутбуков с 2 гигабайтами.

Так оптимизируй! Тыжпрограммист.

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

на ЛОРе я уже наверное в пятый или шестой раз от разных людей читаю эту белиберду, написанную с убийственно серьёзным видом.

Я о таком не только на LOR слышал. Вот у PyQt действительно более сильные ограничения: либо GPL используй, либо покупай коммерческую. Но где-то видел, что в таких случаях некоторые коммерческие конторы, когда нужно обойти ограничения GPL, выпускают какую-нибудь обвязку под BSDL-лицензией, которая совместима с GPL, а основную прогу использующую эту обвязку как внешнее приложение уже выпускают закрытой.

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

Про PyQt не знаю, но у «обычной» Qt, начиная с нокиевского периода (за что Нокии, кстати, большое спасибо!) вполне себе стандартная LGPL, с которой, как правило, никаких извращений не нужно.

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

В целом да, но какие-то отдельные модули есть и под GPLv3, как пишут на сайте самого Qt, но, их, видимо, мало.

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

Я даже не хочу придираться, к тому, что ты вместо Qt пишешь QT

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

LGPL, насколько я знаю, QT не поддерживает.

Вот ты скажи, ты где эту ахинею вычитал?

Извиняюсь, ошибся немного. А написано это много где. Например, в 4-ом издании книги «Основы программирования в Linux» от 2009 года (оригинал 2008 года). Это из того, что под рукой нашлось, но не только там. Наверно, такие ошибки связаны с тем, что когда-то так и было. А совсем давно qt и вовсе не была свободной. Если теперь ситуация изменилась, и она распространяется по lgpl, то я только рад.

И спасибо за информацию. Буду знать.

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

Из из FAQ

The open source version of Qt is mainly distributed under the LGPL

Да, я уже понял. Спасибо за информацию.

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

Ну извини, если погорячился, просто c 2008 года много воды утекло. Кстати, Qt под LGPL вышла как раз в начале 2009-го.

А «буква» там всё же не совсем «каждая», это уже почти такая же легендарная путаница, как с «тся» и «ться».

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

я за это и говорю.

А программы пишите сидя на корточках и в кепке? На лоре оказывается целая куча любителей вставлять предлог 'за' там, где не следует.

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

Elementary на сколько я помню Vala продвигают. Пациент жив? Понятно, что развивается, но что-то на лоре он не популярный.

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

Лорчую этого анона. У меня тоже припекает когда такой оборот вижу. Притом, что я не граммар наци и обычно на неграмотность мне пох.

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

Не знаю ничего про элементари. Я знаю, что несколько программ от Yorba на нём написано. Geary всякие там и Shotwell.

Пациент жив?

А что ему сделается?

что-то на лоре он не популярный

как и GNOME и GTK+ и вообще все библиотеки из этого стека. на ЛОРе это не нужно.

ты больше ЛОР читай, тут тебе скажут, что линукс не нужен, твоя программа не нужна и ты сам тоже не нужен

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

Спасибо за информацию. Посмотрю Vala.

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

Не связывайся с GUI, это полная жопа!

На крайняк можно веб-морду сделать. В худшем случае — на OpenGL нарисовать, или на быдлопхытоне...

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

пилить один LinuxUI

И была бы очередная говномастдайка!

Линукс тем и хорош, что кастомизируем! А всякие бубунты идут по принципу «превратим конфетку в говно». И их нужно гнобить, а бубунтофилов бить ломами, пока не поймут свою ущербность!

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

Эдди, привет. Но ведь можно было бы сделать так, чтобы этот LinuxUI тупо рендерил в OpenGL и был легковеснее, чем тот же FreeGLUT или GL3W.

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