LINUX.ORG.RU

QML на десктопе

 ,


0

6

Изучаю QML на примере Qt Quick Controls 2, но столкнулся с парой эпичных косяков:

  1. Ресайз окна приводит к пляскам виджетов (пример). Советуют использовать софтварный opengl, но это убивает всю идею QML.
  2. frameless window фактически нереализуем, так как при анимации пользовательские события блокируются. В итоге если у нас где-то крутится спинер - перемещать/ресайзить окно нельзя. При этом перемещать/ресайзить окно за пределы экрана тоже нельзя.

Вопрос к тем кто уже пытался что-либо соорудить на QML - как оно? Я так понимаю, что оно только для встройки, где окно всегда фиксированного размера.

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

★★★★★

Вся суть гуйни и опенжоеля.

anonymous
()

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

Такое же ощущение. Описывать GUI на QML очень приятно, но сама технология уже лет пять не может выйти «в релиз»: сыро, глючно, тормозит, много весит и нет активной базы пользователей, из-за чего любые вопросы по QtQuick/QMLпревращаются в темы Xintrea с 0-1 ответами.

При прочих равных для десктопа лучше выбирать QtWidgets. Надеюсь, его не задепрекейтят, потому что QtWidgets это то, на чём Qt держится. Без него он сразу умрёт.

EXL ★★★★★
()

Тоже как-то пробовал QML, убедился, что фуфло оно. Гораздо больше понравился аналогичный по подходу Sciter, у которого к тому же отличная поддержка Go: описываешь гуй (layout и поведение) на HTML/CSS/TIScript, а логику — на Go. Красота!

hbee ★★★★
()

QML - синоним слова страдать.

trex6 ★★★★★
()

В общем и целом да, для десктопа не готово. Не уверен, что всё во втором пункте правда, но тем не менее.

CrossFire ★★★★★
()

Я вообще не настоящий программист, но при борьбе с GUI в веб и на десктопе возникло стойкое ощущение, что для десктопа рулеры как в gtk/wx рулят, а ML вот вообще не про UI. Но мир сошел с ума, да.

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

Такое же ощущение. Описывать GUI на QML очень приятно, но сама технология уже лет пять не может выйти «в релиз»: сыро, глючно, тормозит, много весит и нет активной базы пользователей, из-за чего любые вопросы по QtQuick/QMLпревращаются в темы Xintrea с 0-1 ответами.

  • Для сложных встраиваемых систем начиная с 5.7 всё хорошо.
  • Для простых встраиваемых систем даже QML из 4 ветки был вполне юзабелен.
  • Для простых мобильных приложений тоже неплохо.
CrossFire ★★★★★
()
Ответ на: комментарий от EXL

Такое же ощущение. Описывать GUI на QML очень приятно, но сама технология уже лет пять не может выйти «в релиз»: сыро, глючно, тормозит, много весит и нет активной базы пользователей, из-за чего любые вопросы по QtQuick/QMLпревращаются в темы Xintrea с 0-1 ответами.

даже добавить нечего

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

описываешь гуй (layout и поведение) на HTML/CSS

Отвратные стандартные контролы и написание своих тормозящих велосипедов как в обычном хтмл/цсс? Боковую панель можно ресайзить влево/враво из коробки?

anonymous
()

Если нужен кастомный уи, то бери кюмл, если нужен нативный уи, то бери виджеты.

Остальное от лукавого, QML готов, нытиков не слушай.

ncuxer
()
Ответ на: Возьмите GTK+. от Moisha_Liberman

Оно плохо везде кроме линукса, ну и разрабы не особо адекватным, ибо пересечение с гномерами, а это диагноз.

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

/* Пожав плечами. */

УМВР. И да, я гномовод. А что там под офтопом, даже и не интересно.

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

Да и в линуксе... С тёмными темами в браузерах скажем невидимый текст, а тк то отлично конечно. Нет.

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

Sciter использует HTML для декларативного описания GUI, который в Linux реализуется на GTK+. Можно сделать «красиво» и сложно.

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

Умер? А ты откуда щас написал текст?

И каких мобилок? Для мобилок есть свои API, для Java и Swift соответственно. C++ и Qt там нахрен не уперлись

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

Умер?

Да.

А ты откуда щас написал текст?

Мне не нравятся телефоны просто, но они уже составляют большую часть интернет пользователей же.

И каких мобилок?

Мобилки, планшеты, вот все это.

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

Не знаю.

У меня Gnome3, тормозов не вижу. При использовании xfce, что иногда бывает, да, тормозов тоже не вижу. Видимо потому что генточка и правильно приготовленная. Возможно что и так.

Говоря о qt с qml, я не могу не напомнить что уже где-то сказал что дескать, это вы ещё не пробовали с qml поработать, во где всё страньше и страньше. Ну вот ТС и попробовал... Предсказуемо офигел.

Так что, я не знаю где там и какие тормоза, но с gtk хотя бы работать можно. И писать достаточно просто. Имею опыт написания с Gtk и с qtquick/qml. Последнее это ещё тот адок. Не, ну раскурить тему интеграции js <-> C++ можно, конечно, не велика проблема. Но остаётся неясным смысл нафига оно именно вот так.

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

Sailfish OS.

Это Qt/QML/QtQuick во все поля. Работает. И работает шустро надо заметить.

Но после GTK писать... Местами вызывает улыбку, а местами мат.

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

Рукоблудие до добра не доводит.

С тёмными темами в браузерах скажем невидимый текст

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

Настраивается отображение и в тёмных темах. Но тут сам по себе gtk не при делах. Вопросы к авторам браузеров.

Moisha_Liberman ★★
()

1. Есть пример кода? Есть предположение, что элементы разложены через какие-то сложные расчеты а не через стандартные биндинги.

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

ya-betmen ★★★★★
()
Ответ на: Не знаю. от Moisha_Liberman

тормозов не вижу

Такое бывает у медленных людей. Остальные страдают. Разрабы Deepin, вон, поняли что gtk-поделия неизлечимы, и выкинули Mutter в пользу KWin. Используют kde-wm в окружении на gtk, лол, до чего дошло.

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

По себе других не судят.

Такое бывает у медленных людей.

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

Остальные страдают.

Каждый проводит время так, как ему захочется.

Разрабы Deepin

А это кто и что это? Смотрю на дистровотче. Дебьян-бейзд, Ubuntu-based, происхождение — China. Не оно? https://distrowatch.com/table.php?distribution=deepin

Если оно, то и пофиг. Говорю же — каждый проводит своё время так, как хочет. Я в генточке не страдаю почему-то. Впрочем, можете считать меня «медленным человеком», читай, тормозом, но это Ваше право. Мне как-то пофиг. =)))

Успехов в наслаждении QML. Вот теперь как это называется, оказывается... =)))

Moisha_Liberman ★★
()
Ответ на: По себе других не судят. от Moisha_Liberman

А может, просто говножелезо пора бы на помойку выкинуть?

Когда Plasma и Qt-проги летают там, где Gnome и GTK ворочаются как ватное одеяло, в помойку летит не железо, а криворукие поделия - Gnome и GTK.

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

Ни чем недоказанное утверждение.

Стоимость железа и его качество (характеристики) вещь относительная. Кому-то и лишних пара гигабайт за счастье.

Впрочем, мне спорить лень. Пойду, продолжу код писать. Для GTK/Gnome.

Рад был пообщатся.

Moisha_Liberman ★★
()

Протестил на примере — первый пункт у меня не воспроизводится. 5.12.0, GNU/Linux, дискретная видяха.

import QtQuick.Controls 2.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    //flags: Qt.Window | Qt.WA_OpaquePaintEvent | Qt.WA_NoSystemBackground

   
        Button { text: "press me"; anchors.right: b2.left; anchors.top: b2.top  }
        Button { text: "press me"; id: b2; anchors.centerIn: parent }
        Button { text: "press me"; anchors.left: b2.right; anchors.top: b2.top }
}
Kakadu
()
Ответ на: комментарий от Deleted

Gtk2 лучше любого Qt, Gtk3 по скорости как Qt5, я отличий не заметил, только вот Gtk3 это линуксовый тулкит, а не какая то проприетарная поделка.

Deleted
()
Ответ на: Не знаю. от Moisha_Liberman

У меня Gnome3, тормозов не вижу.

У меня одно время были, в прошлом году, до этого все было быстрым, и сейчас тоже, видимо это что то связанное с переходом на Wayland.

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

На этом примере всё воспроизводится.

import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 2.4

Window {
    id: window
    visible: true
    width: 640
    height: 480
    flags: Qt.FramelessWindowHint

    // SizeGrip
    Item {
        id: root 
        anchors.fill: parent

        MouseArea {
            width: 15
            height: 15
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            cursorShape: Qt.SizeFDiagCursor
            onPositionChanged: {
                window.width  += mapToItem(root, mouseX, mouseY).x - root.width
                window.height += mapToItem(root, mouseX, mouseY).y - root.height
            }
        }
    }

    BusyIndicator {
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter
        width: 100
        height: 100
    }

    MouseArea {
        width: parent.width
        height: 50

        property point clickPos: Qt.point(1, 1)

        onPressed: clickPos = Qt.point(mouse.x, mouse.y)

        onPositionChanged: {
            if (window.visibility === Window.Windowed) {
                var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y)
                window.x += delta.x;
                window.y += delta.y;
            }
        }

        Rectangle {
            anchors.fill: parent
            color: "black"
        }
    }
}

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

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

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

А нормальная кросспласформенность

Qt приложения выглядят на винде неестественно, на линуксе тоже, так как нимогут в тему линуксового тулкита ака гтк.

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

Всем плевать на естественность на венде, там чем пестрее приложение выглядит тем лучше. И есть тема под венду.

нимогут в тему линуксового тулкита ака гтк

если смотреть на это объективно, то инопланетный гей-тулкит разрабатываемый шизофрениками и проприерасными корпорациями ака гтк не может в тему открытого профессионального кроссплатформенного фреймворка (Qt).

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

Мода изменилась. Раньше добивались, чтобы кроссплатформенное приложение выглядело на каждой платформе «нативно». Теперь хвастаются, что приложение везде выглядит абсолютно одинаково.

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

Qt приложения выглядят на винде неестественно

Смешная шутка

на линуксе тоже, так как нимогут в тему линуксового тулкита ака гтк

Выставь GTK-тему в настройках Qt. А лучше открой уже для себя QtCurve, ну

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

Обычно говорят только про то что Qt якобы естественно выглядит, а Gtk3 плох... По моему под виндой ужасны оба, разве что Gtk3 он красивый сам по себе. В Qt конечно есть 10 своих реализаций строк, массивов, но нужно ли это...

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

Ужос же голимый, ясное дело это работает черт те как.

Выкини

onPositionChanged: {
                window.width  += mapToItem(root, mouseX, mouseY).x - root.width
                window.height += mapToItem(root, mouseX, mouseY).y - root.height
            }
и
onPositionChanged: {
            if (window.visibility === Window.Windowed) {
                var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y)
                window.x += delta.x;
                window.y += delta.y;
            }
        }

Как я и сказал работай с биндингами, не нужно считать руками. Вот если и тогда будут проблемы - нужно смотреть подробнее.

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

Боюсь...

А нормальная кросспласформенность, это ислючительный плюс.

Боюсь, «нормальная кроссплатформенность» это миф из жарких и влажных фантазий.

Чем дальше, тем больше. Чем глубже в систему, тем меньше шансов на эту самую «нормальную кроссплатформенность», но её зачем-то к месту и не к месту поминают. Наверное, это приятно.

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

Боюсь...

проприерасными корпорациями

Боюсь... Не угнаться редхату с канониклом за лоровскими анонимусами, более чем дохрена сделавшим для мира Linux и СПО в частности, да...

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

У меня Gnome собран...

С use-flag wayland. Пришлось, т.к. система сборки Mer и эмулятор Sailfish требуют его. Вроде, всё нормально было даже на i915... Но тот ноут уже продан, проверить не могу на 915. На 965 вообще вопросов нет, на nvidia тем более.

Где люди их находят, эти тиринги и низкую производительность, я ума не приложу. Видимо, там всё очень криво в их установленном дистрибутиве. Ядро, скорее всего, собрано по дефолту (загрузись на любом железе), ну и так... Понапихано всего и сразу и без башки. Бывает...

Понимаю... «Канпелять ведро» это не модно. Ну и не надо.

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