Блог им. semiletovмысли о переходе на Qt5

Сейчас меня заранее интересует лишь некоторые аспекты переноса своих программ на Qt5. Например — модуль QtSVG объявлен deprecated и его хотели вообще убрать, но потом решили оставить — причем сообщили об этом весьма невежливо. А причина для deprecated была, по словам разработчиков, такой — у команды Qt не было умения и желания поддерживать этот модуль. Напомню, что…
QtSVG — важная часть Qt, позволяющая рендерить SVG средствами самой Qt. Все векторные иконки, кнопочки — это всё благодаря QtSVG. QtSVG поддерживает лишь небольшую, основую часть стандарта SVG, но и этого многим программистам достаточно. Однако разработчики Qt решили убрать QtSVG и навязать для рендеринга SVG функции WebKit. В блоге любопытно было читать, как разработчики Qt «ценят» мнение программистов, использующих их продукт.
Однако, для меня будущее QtSVG остается туманным, а поскольку WebKit я использовать не намерен (он мне не нужен), то вместо векторных глифов на кнопках придется делать PNG.
Далее. Модуль QtScript объявлен deprecated. Конечно, зачем в Qt QtScript, если появилась QML. Вот только не нужна мне QML. Впрочем, из QtScript я использовал функцию evaluate — вместо эдакого встроенного калькулятора. Например:


  QScriptEngine e;
  QScriptValue v = e.evaluate ("2+2");
  qDebug() << v.toString();


В Qt я мог бы вместо этого использовать пресловутый QWebKit, ибо в классе QWebFrame есть функция:

QVariant QWebFrame::evaluateJavaScript ( const QString & scriptSource )


Но — я не буду использовать WebKit. Мне НЕ НУЖЕН веб-браузер в моих программах. Поэтому я сейчас пишу простенькую «считалку» — вычислитель выражений.
Я подозреваю, что основные косяки при переходе на Qt5 возникнут со «своими» виджетами, которые рисуют себя через QPainter. Я также подозреваю, что придется вспоминать GTK.
  • 0
  • semiletov
  • 09 сентября 2011, 23:37

Комментарии (22)

  • avatar
  • the
  • 10 сентября 2011, 00:34
  • #
  • 0
Никто насильно не заставляет переписывать свои программы на Qt5, просто одновременно будут установлены Qt4 и Qt5.
Где будут? Как долго будут? Старая версия Qt неизбежно обречена на вымирание.
«Due to source and binary compatibility constraints, we can’t (and won’t) drop the offending API in Qt 4.x. But it may limp.»
Тролли охотно и часто отвечают на новые вопросы приглашаю Вас к прочтению и дискуссии в блоге Троллей.
Думаю неплохо будет сделать заметку по мотивам Ваших исследований.

И 5.х обречена… ничто не вечно под луной… :D
Я не вижу смысла общаться с разработчиками Qt. Они не прислушиваются к доводам программистов, которые используют Qt.
В таком случае обсуждение теряет всяческий смысл, и переходит в плоскость веры.
Плоскость веры — это убаюкивающе увещевания про QtQuick. Я же написал о конкретных трудностях, с которыми столкнусь при переносе своих программ.
Мне казалось мы рассматриваем QtQuick лишь как проект забирающий время у Троллей, поскольку ни Вы ни я его не используем. А в связи с тем, что Интел отказалась от развития MeeGo наверное мало кто будет использовать QML (имхо). Так что говоря о вере я имел ввиду заявления троллей относительно QWidget и общей архитектуры Qt (разделение на модули).
Есть простое решение Вашей проблемы — используйте Qt 4.x, он ещё долго будет поддерживаться (хотя бы и форком). Что касается ветки 5.х, к весне 2012 будет точно известно какие из изменений будут жизнеспособными.

Мне бы очень хотелось, чтобы QWebKit2 и изменения в QtScript выжили.
Я не буду использовать Qt 4.x, когда появится Qt 5.x. И чем раньше я подготовлю исходники своих программ к переносу, тем лучше.
А в связи с тем, что Интел отказалась от развития MeeGo
У меня совсем другая информация: В Intel не намерены отказываться от MeeGo
  • avatar
  • NOX
  • 10 сентября 2011, 01:12
  • #
  • 0
1. QtSVG избыточен при всей своей сложности реализации. WebKit хорошо поддерживается сторонними разработчиками. Да и инициализировать для иконок SVG движок, хм… некомильфо что-ли.
2. QtScript «Deprecated Reasoning: flawed design, being replaced by a better design.»
Я уже упоминал что под одним API, согласно плану, будут собраны разные скрипт движки. Как писали Тролли — QtScript просто не был предназначен для этой цели. Писали, если мне не изменяет память в начале 2010 года.
WebKit != JavaScriptEngine + HTMLRenger. WebKit == HTMLRenger. Именно эту идею стараются реализовать Тролли в своих API. В прошлом году довольно много обсуждали и писали QWebKit.
1. Многим разработчикам нужен компактный QtSVG вместо громоздкого QWebKit.
2. QtScript — отказ от него обусловлен приходом ко власти QML.
1. Но всем разработчикам нужен работоспособный неустарелый SVG движок. К слову было бы интерестно посмотреть на сравнительный анализ QtSVG и QWebKit2.
2. Ваша фраза звучит, как тезис который Вы в состоянии доказать. Объясните каким образом QML враждует с идеей QtScript. Официальный взгляд на проблему
1. QtSVG и QWebKit2 не нужно сравнивать — у них разные применения. Ренредить SVG через QWebKit2 — всё равно что кипятить воду для чая в котле паровоза.
2. Я не буду вам ничего доказывать. Кроме того, я не говорил, что QML враждует с QtScript.
2. QtScript — отказ от него обусловлен приходом ко власти QML.

ну что за истерика
от QtScript не отказываются, JS теперь будет в ядре.
QtBase is a repository that contains few library such as QtCore, QtGui, and now, V8.
Considering that we plan to have both QtDeclarative, QtWebKit, and the
replacement for QtScript that are going to use V8, it make sens to put
this common dependence in qtbase.
Простите, а вы читаете вами же цитируемое? В нем речь идет о замене модуля QtScript.
Толкование: отказ
Толкование: замена
Не надо в детсад играть и в словарь меня тыкать. Читайте внимательно посты разработчиков Qt.
о замене QtScript на V8. И то, и другое (внезапно) выполняет ECMA Script. В чем таки пробдема? инклюды сменить?
Я с удовольствием посмотрю, как вы портируете свою программу на Qt5, просто сменив «инклюды».
Поэтому я сейчас пишу простенькую «считалку» — вычислитель выражений.
Вы можете использовать уже готовое, например
libqalculate — qalculate.sourceforge.net/
muparser — muparser.sourceforge.net/

Может в них найден «Фатальный недостаток»? =)
Мне гораздо приятнее и полезнее написать «считалку» самому, что я уже вчера и сделал :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.