LINUX.ORG.RU

Подскажите такой софт. Или не софт, а библиотеки. Кроме qt, если можно.

Чем не устраивает Qt? Сейчас PyQt5 весьма активно используется для прототипирования GUI.

Вообще прототипировать GUI лучше всего на декларативном ЯП, таком, как QML. Жаль только технология QtQuick должного распространения не получила.

EXL ★★★★★ ()

React,proton-native сам не пробовал, но во всех темах хейта Electron и прочих Web технологий, защитники приводили аргументы, что писать на этих фреймворках гораздо быстрее, и никто такие аргументы не опроверг, а жаловались лишь на лишнее потребление ресурсов/недостаточно поддерживаемых платформ.

Так что Web-технологии для ui-прототипирования должны быть неплохи

fsb4000 ★★ ()

Кроме qt, если можно

Подскажите, чем бы съесть суп - вилкой или палочками суши, кроме ложки если можно. Примерно так это всё выглядит

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

Каковы причины, на твой взгляд?

Изначально в Trolltech (он тогда был ещё жив) хотели, чтобы на QML писали UI девочки-дизайнерши, а потом программисты сопряжали их формочки со существующей кодовой базой на C++/Qt.

Но после нескольких лет опытов они поняли, что девочки-дизайнерши неспособны выползти за пределы мирка Adobe и освоить какой-нибудь там Qt Creator.

В итоге было решено делать из QtQuick полноценную технологию с низким порогом вхождения. Отчасти это получилось, язык QML действительно прост, приятен и очень удобен для создания GUI, вот только когда в GUI нужно вдохнуть «жизнь» – приходится вылазить за пределы QML и JavaScript. А это довольно больно даже для более-менее опытных программистов, см. темы по тегу qml от того же @Xintrea с 1-2 ответами.

Получается, что кроме QML и JavaScript требуется знать ещё и C++/Qt. А если ты пишешь для мобилок, то ещё и Java/Objective-C в довесок. И то, это не всё, ведь ещё нужно разбираться во всяких там сопрягающих технологиях по типу JNI и Objective-C++, если твоё приложение отличается от HelloWorld-кнопки. Всё это задирает планку вхождения до небес и возникает закономерный вопрос: почему бы не взять стандартные системные средства построения GUI и не мучиться?

Ну и конкуренты, конечно, не дремлют. Взять тот же PyQt5, программистам вообще не требуется знать о каком-то там C++, они просто пишут на Python, используют его батарейки, строки, контейнеры и прочее. А Qt используют только для GUI. На Windows есть WPF, поэтому QML (да и сам Qt) там остаётся без внимания. На Android и iOS есть стандартные средства построения UI, которые удобные, вылизанные и как ими пользоваться знают куча разработчиков.

Да тут ещё и девочки-дизайнерши отдуплились, стали называться фронтендщиками и притянули на десктоп (Electron) и мобилки (ReactNative?) свой Web-стек технологий с армией макак. Какой смысл учить QML + C++, когда разработчик уже знает и вовсю пользуется HTML5/CSS/JavaScript? Да и эти платформы сделаны так, что нырять в другой мир, как в случае с QML совершенно не нужно.

Так что весь этот огромный ворох проблем, активность конкурентов, да и сама сыроватость (несмотря на 7+ лет активной разработки) технологии QtQuick говорят сами за себя.

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

Если позволите...

То я только добавлю что сталкиваясь на практике с Sailfish OS (пишу под неё, да), с тоской вспоминаю времена Nokia N900. Там-то был gtk+ вариант от canonical под названием hildon и всё делалось в разы проще и быстрее чем с qml, пусть даже и на С++. А не на С, как это было на N900.

По-моему, люди, утверждающие что писать с Qt и qml это проще пареной репы, не видели кода с gtk+. Вот там действительно всё просто.

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

Стек технологий «C# => .NET Framework => WPF» на винде гораздо более распространён, чем «C++ => Qt Framework => QtQuick» и порог вхождения у него тоже ниже. Ну и поддержка, документация, куча информации и активное сообщество, инструменты, библиотеки и пр. ни в какое сравнение. Популярный сайт Stack Overflow кстати тоже на сишарповском ASP.NET, насколько я помню, написан.

У PyQt ИМХО, порог вхождения ещё ниже. Но какой бы не была лёгкой в освоении и вкусной связка Python+PyQt на той же винде правит балом C# и сопутствующие фреймворки.

EXL ★★★★★ ()

По теме если.

Кроме qt, если можно.

Можно gtk+, если не вызывает отторжения. Тогда берёте glade, создаёте описание оконного интерфейса программы, на выходе получите файл xml, а дальше уже используйте его хоть с тем же pygtk, хоть с С, хоть с vala. В принципе, можно даже с bash (через gtkdialog).

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

Ниже чем у Qt. Там все пользуются XAML, он похож на QML и HTML. Вот пример:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <RelativePanel>
            <Button Name="HamburgerButton" FontFamily="Segoe MDL2 Assets" Content="&#xE700;" FontSize="36" Click="HamburgerButton_Click" />
        </RelativePanel>
        <SplitView Name="MySplitView" 
                   Grid.Row="1" 
                   DisplayMode="CompactOverlay" 
                   OpenPaneLength="200" 
                   CompactPaneLength="56" 
                   HorizontalAlignment="Left">
            <SplitView.Pane>
                <ListBox SelectionMode="Single" Name="IconsListBox" SelectionChanged="IconsListBox_SelectionChanged">
                    <ListBoxItem Name="ShareListBoxItem">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE72D;" />
                            <TextBlock Text="Share" FontSize="24" Margin="20,0,0,0" />
                        </StackPanel>
                    </ListBoxItem>
                    <ListBoxItem Name="FavoritesListBoxItem">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE734;" />
                            <TextBlock Text="Star" FontSize="24"  Margin="20,0,0,0" />
                        </StackPanel>
                    </ListBoxItem>
                </ListBox>
            </SplitView.Pane>
            <SplitView.Content>
                <TextBlock Name="ResultTextBlock" />
            </SplitView.Content>
        </SplitView>
    </Grid>

fsb4000 ★★ ()
Ответ на: Если позволите... от Moisha_Liberman

По-моему, люди, утверждающие что писать с Qt и qml это проще пареной репы, не видели кода с gtk+. Вот там действительно всё просто.

Ну это извечное C vs. C++, GTK+ vs. Qt; одному первое кажется невыносимо сложным и нудным, другому – второе. Я вот с Qt на мобилках познакомился сперва, ещё со старым и древним Qt 2. А GTK+ вообще не видел на мобильных устройствах, так как 770, N800, N810, N900 и иже с ними, прошли мимо меня. А у того же N9 уже был интерфейс на Qt 5 и QML. И еще Nokia перед смертью делала на QtQuick такую штуку, как Meltemi OS, тоже Linux-based:

https://i.imgur.com/ADHjUu6.jpg

Для бюджетных девайсов. Всё это благополучно было закопано. Как и QWERTY-смартфон, который я ждал: N950.

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

XAML мне больше напоминает FXML от того же JavaFX:

https://github.com/EXL/QAndroidFileHostParser/blob/master/src/main/resources/layouts/QAndroidFileHostParser.fxml

Всё-таки C# всегда ориентировался на Java (или наоборот). Ну и на Android’ные формочки XAML твой тоже похож:

https://github.com/EXL/Gish/blob/master/gish/src/main/res/layout/gish_launcher.xml

А QML всё-таки несколько другое, более удобоваримое человеком и лаконичное, без всякого там наследия XML:

https://github.com/EXL/BezierClock/blob/master/qml/config.qml

И с возможностью вычислений различных выражений и вставки Js-куском. В общем, напоминает скрещение YAML+CSS+JSON+JavaScript между собой.

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

Ещё вопрос: когда пишешь на PyQt, с С++ вообще не пересекаешься?

Когда ты пишешь что-то на Python, с самим C++ в общем случае ты вообще не пересекаешься. Разве что в твоё приложение какую-нибудь специфическую либу приплюснутую надо пробросить или к ней биндинг написать. Но вряд ли это типичная задача для прикладника.

Однако, с Qt (не C++) кухней желательно быть знакомым. Этот опыт очень полезен в решении каких-либо трудностей: Pyqt5 локализация диалоговых окон и др. TL;DR – зная как правильно локализовать нативные Qt-приложения, я помог человеку с его проблемой с PyQt5.

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

Наработки не пропали...

По большому счёту. В Sailfish OS всё те же Qt. Например, только что убедился что QtPositioning есть и работает. 5.2 можно, 5.11 не пойдёт. =)

Мобила, которой пользуюсь, это INOI R7. Может, по железу он не самый последний, но так-то всё работает. Да и цена там что-то типа 12-15т.р., бюджетненько так в принципе.

Moisha_Liberman ()
Ответ на: По теме если. от Moisha_Liberman

Тогда берёте glade, создаёте описание оконного интерфейса программы, на выходе получите файл xml, а дальше уже используйте его хоть с тем же pygtk, хоть с С, хоть с vala.

Кстати да, вот Vala тоже классная технология/язык синтаксически напоминающий C#:

https://wiki.gnome.org/Projects/Vala/GTKSample

GTK-разрабы тоже часто использовали Vala для прототипирования. У этой технологии даже есть ощутимое преимущество перед QtQuick, ибо Vala просто транслируется в обычный C, который потом легко компилируется тем же GCC. Никаких склеек через JavaScript и т. д.

И точно так же, как и QtQuick/QML, эта Vala не получила должного распространения. Хотя бы на уровне сегодняшнего Electron, прости, г-споди.

В Sailfish OS всё те же Qt. Например, только что убедился что QtPositioning есть и работает. 5.2 можно, 5.11 не пойдёт. =)

Он там, насколько я помню, древний. Да и QML-компоненты отвечающие за GUI, вроде той же Silica до сих пор закрытые (?)

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

С glade там просто всё.

XML, он и по-любому XML. Важно просто сигналы и коллбеки на него навесить, но это потом. Vala да, прекомпилятор к С, там всё просто. Но файлы интерфейса после glade без изменений можно использовать в том же pygtk. В конце-концов, сейчас даже сишники для gtk/gnome редко интерфейс в коде рисуют, просто подстёгивают соответствующий .glade-файл и поехали. Так намного проще.

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

Справка там на Qt 5.6 сейчас, точно.

Да и QML-компоненты отвечающие за GUI, вроде той же Silica до сих пор закрытые (?)

А вот тут не скажу, я их не колупал вообще никак. Я их просто использую. =)

Moisha_Liberman ()

любопытно: кто из выше-высказавшихся читал исходный пост, кроме заголовка ??

и попробуйте рассказать как для UI «прототипировать рёбра графа сплайнами»

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