<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог НТЦ Метротек &#187; qt</title>
	<atom:link href="http://blog.metrotek.spb.ru/tag/qt/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.metrotek.spb.ru</link>
	<description>блог разработчиков</description>
	<lastBuildDate>Sat, 21 Jan 2012 12:36:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Портирование приложений с qt2.3 на qt4.6</title>
		<link>http://blog.metrotek.spb.ru/2010/09/27/portirovanie-prilozheniy-s-qt2-3-na-qt4-6/</link>
		<comments>http://blog.metrotek.spb.ru/2010/09/27/portirovanie-prilozheniy-s-qt2-3-na-qt4-6/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 19:45:16 +0000</pubDate>
		<dc:creator>Павел Курочкин</dc:creator>
				<category><![CDATA[разработка]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2315</guid>
		<description><![CDATA[Я недавно столкнулся с задачей портирования gui-приложений с qt2.3.10 на qt4.6. qt2.3.10 у нас использовался в b4. а qt4.6 используется в b5. Ну&#8230; если быть совсем честным, то в b5 используется qt4.5, но при отладке на десктопе мы используем qt4.6. поэтому портировал я именно на qt4.6. При портировании я опирался на родной гайд qt4.6 Ну&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Я недавно столкнулся с задачей портирования gui-приложений с qt2.3.10 на qt4.6.<br />
qt2.3.10 у нас использовался в b4. а qt4.6 используется в b5. Ну&#8230; если быть совсем честным,<br />
то в b5 используется qt4.5, но при отладке на десктопе мы используем qt4.6.<br />
поэтому портировал я именно на qt4.6.</p>
<p>При портировании я опирался на <a href=http://doc.qt.nokia.com/4.6/porting4.html>родной гайд qt4.6</a><br />
Ну&#8230; если быть совсем честным, то к этой документации я &#171;пришёл&#187; после двух вручную спортированных приложений ;) Когда упёрся <span id="more-2315"></span> в приложение с ui-файлом старой версии.</p>
<p>Исходные приложения используют только &#171;стандартные&#187; элементы управления (кнопки, поля ввода, выпадающие списки), Layout&#8217;ы и .ui &#8212; формы. Никакой экзотики, вроде custom drawn виджетов и т.п.</p>
<p>Тролли описывают переход от qt3 к qt4 в своей доке, но мне удалось переехать и от qt2.3 к qt4 без проблем.<br />
Вот как выглядит процедура. Сначала натравливаем утилиту qt3to4 на файл проекта (.pro-шник, то есть). Всё работает чётко и быстро: все старые qt-шные классы переименовываются в соответствующие с приставкой Q3 и правятся имена подключаемых хедеров. Но на этом не всё: программа ещё лезет в .pro-файл и устанавливает там QMAKE_UIC=uic3. Эта строка лишняя, если<br />
портировать и ui-файл тоже, потому что в этом случае утилита uic3 предназначена для работы со старыми ui-файлами.<br />
Да. Программа создаёт log-файл, в котором протоколирует все изменения, сделанные в исходниках проекта. И программе можно подсунуть конфигурационный файл, который будет выполнять те замены, которые будут указаны. То есть замену QMAKE_UIC можно отключить.</p>
<p>Дальше конвертируем старые ui-файлы в новые командой <strong>uic3 -convert</strong>. Все работает быстро и чётко. Но на этом автоматика заканчивается ;) Дальше &#8212; ручками и/или regexp&#8217;ами.<br />
Из старых ui-ков генерировался хедер, в котором объявлялось готовое окно. Нужно было только от<br />
него унаследоваться. В qt4 из новых ui-ков генерируется класс-контейнер и он не является окном.<br />
Соответственно, в коде нужно это учесть: унаследоваться от окна и автогенерированного хедера (причём в строго такой последовательности, так требует moc). Другой вариант &#8212; сделать переменную<br />
 в окне типа автогенерированного класса. И вызвать в конструкторе setupUi( this ).<br />
Я выбрал второй вариант. А если быть честным, то пока писал статью, нашёл информацию о том, что порядок наследования строго определён. А когда я экспериментировал, сделал включение в другом порядке, и пришлось отказаться от этого метода. Поторопился я&#8230; :(</p>
<p>Ещё я заметил, что конвертор uic3 в редких случаях меняет разметку. И некоторые элементы<br />
управления, к которым производилось обращение из кода, перестают существовать.<br />
В моём случае конвертор из набора BoxLayout&#8217;ов сгенерил QGridLayout. </p>
<p>Также из автоматизма выбился такой момент: раньше существовал конструктор с указанием<br />
имени окошка: QWidget(  parent, title, flags ). Теперь этот конструктор принимает только parent &#038; flags.<br />
Для установки title требуется вызов setWIndowTitle. Но это, конечно, мелочи.</p>
<p>В итоге: имеется два спортированных приложения с десятью GUI-шными плагинами.<br />
На первый взгляд &#8212; работают. Детальное тестирование будет на следующей неделе. Заняло это примерно 3 дня плотной работы.<br />
Таким образом, команде Trolltech &#8212; зачёт. За то, что не пришлось переписывать код,<br />
а воспользоваться старыми объектами, оставленными для совместимости. За то, что удалось сэкономить кучу труда на составление списка замен и на переделывание старых форм в новые.</p>
<p>PS: пока писал заметку, я &#171;нашёл&#187; и porting guide from qt2 to qt3. Но какой в нём теперь смысл&#8230; ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2010/09/27/portirovanie-prilozheniy-s-qt2-3-na-qt4-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пинаем GUI</title>
		<link>http://blog.metrotek.spb.ru/2010/02/16/pinaem-gui/</link>
		<comments>http://blog.metrotek.spb.ru/2010/02/16/pinaem-gui/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 13:37:46 +0000</pubDate>
		<dc:creator>Антон Черниговский</dc:creator>
				<category><![CDATA[новости]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1846</guid>
		<description><![CDATA[А теперь &#8212; для разнообразия &#8212; серьёзно :) Начата работа над циклом статей &#171;Пинаем GUI&#187;, посвященном программированию GUI на Qt4, в т.ч. для встраиваемых систем. И первая статья &#8212; Учим Qt новым трюкам &#8212; обзор способов изменить поведение и внешний вид виджетов. Комментарии и дополнения приветствуются :)]]></description>
			<content:encoded><![CDATA[<p>А теперь &#8212; для разнообразия &#8212; серьёзно :)<br />
Начата работа над циклом статей &#171;Пинаем GUI&#187;, посвященном программированию GUI на Qt4, в т.ч. для встраиваемых систем. И первая статья &#8212; <a href="http://wiki.metrotek.spb.ru/wiki/Учим_Qt_новым_трюкам">Учим Qt новым трюкам</a> &#8212; обзор способов изменить поведение и внешний вид виджетов.<br />
Комментарии и дополнения приветствуются :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2010/02/16/pinaem-gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>История разработки нового UI для b4</title>
		<link>http://blog.metrotek.spb.ru/2009/05/22/istoriya-razrabotki-novogo-ui-dlya-b4/</link>
		<comments>http://blog.metrotek.spb.ru/2009/05/22/istoriya-razrabotki-novogo-ui-dlya-b4/#comments</comments>
		<pubDate>Fri, 22 May 2009 20:24:07 +0000</pubDate>
		<dc:creator>Евгений Питель</dc:creator>
				<category><![CDATA[b4]]></category>
		<category><![CDATA[новости]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[bitbake]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[openembedded]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1006</guid>
		<description><![CDATA[Начало было положено 10 декабря 2008 с мозгового штурма, создавшего схему в стиле mind map. Ну, и первой задачей была разработка нового интерфейса &#8212; чтобы, значит, приспособленного под работу просто пальцами и всяко симпатичнее айфона. Антон предложил начать с оценки &#171;чистого&#187; Framebuffer&#8217;а, то есть: своя библиотека под FB; Direct FB; Cairo. Схема: Разбираясь с Direct [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1069" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/qt-150x150.png" alt="qt" width="150" height="150" /> Начало было положено 10 декабря 2008 с мозгового штурма, создавшего схему в стиле mind map.</p>
<p>Ну, и первой задачей была разработка нового интерфейса &#8212; <strong>чтобы, значит, приспособленного под работу просто пальцами и всяко симпатичнее айфона</strong>. Антон предложил начать с оценки &#171;чистого&#187; Framebuffer&#8217;а, то есть:</p>
<ul>
<li>своя библиотека под <a href="http://en.wikipedia.org/wiki/Framebuffer">FB</a>;</li>
<li><a href="http://www.directfb.org">Direct FB</a>;</li>
<li><a href="http://www.cairographics.org">Cairo.</a></li>
</ul>
<p><span id="more-1006"></span></p>
<p>Схема:</p>
<p><img class="size-full wp-image-1007  alignnone" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/diagram2.png" alt="diagram2" width="579" height="363" /></p>
<p>Разбираясь с Direct FB вышли на <a href="http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB">GTK+ поверх DFB</a> &#8212; получалось, что не было смысла городить свою библиотеку, когда есть все готовое.</p>
<p>Но, с подачи Юры, с учетом наличия Openembedded, решено было сделать хитрее. Мы собрали образ для B4 &#8212; c X-ами на базе Ангстрома, с GTK+/KDrive</p>
<p>Вот KDrive, как известно, работает поверх FB. Это было уже не чистое GTK+DFB, но так было интереснее</p>
<p>ДА!, кстати, в процессе был собран и запущен под QEMU дистрибутив <a href="http://www.pokylinux.org">POKY</a> , созданный компанией <a href="http://o-hand.com/work/">O-Hand</a>, которую купил интел, который вот, как раз, выпустил таки <a href="http://www.opennet.ru/opennews/art.shtml?num=21808">Moblin beta</a></p>
<div class="wp-caption alignnone" style="width: 285px"><a title="Интерфейс платформы Moblin" href="http://moblin.org/community/blogs/imad/2009/moblin-v20-beta-netbooks-and-nettops-its-here#comments-title"><img class=" " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/m_zone.png" alt="m_zone" width="275" height="161" /></a><p class="wp-caption-text">Интерфейс платформы Moblin</p></div>
<div id="attachment_1019" class="wp-caption alignnone" style="width: 285px"><a href="http://moblin.org/documentation/moblin-overview/moblin-core"><img class="size-full wp-image-1019" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/moblin-arch-diagram.jpg" alt="moblin-arch-diagram" width="275" height="161" /></a><p class="wp-caption-text">Moblin Core</p></div>
<p>Ну а мы зато сделали прототип на GTK+.</p>
<div id="attachment_1022" class="wp-caption alignnone" style="width: 410px"><img class="size-full wp-image-1022 " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/screenshot-1.png" alt="screenshot-1" width="400" height="240" /><p class="wp-caption-text">Внешний вид прототипа OTDR на B4 на GTK+, GtkPlot</p></div>
<p>и нарвались на &#171;странность&#187; с отрисовкой GtkEntry &#8212; <a href="http://blog.metrotek.spb.ru/2009/04/21/bitbake-angstrom-i-dvizhenie-v-storonu-gtk/comment-page-1/#comment-309">см.блог</a></p>
<p>смущало также, немного, что в то время как мы уходим c QT на GTK, такие парни как NOKIA и OPENMOKO наоборот, идут в сторону QT от GTK.</p>
<p>А NOKIA так вообще, купила троллтек и, похоже, собирается выпустить новый релиз Маемо на QT4.</p>
<div id="attachment_1021" class="wp-caption alignleft" style="width: 250px"><img class="size-full wp-image-1021   " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/conv_p1020650.jpg" alt="conv_p1020650" width="240" height="320" /><p class="wp-caption-text">Запустили QT Embedded Widgets на B4!</p></div>
<p>Таки мы решили проверить работу QT4 на B4!</p>
<p>Количество QT вариантов &#8212; отдельная тема, но и в этом разобрались.</p>
<p>Сейчас есть:</p>
<p>QT4X11.</p>
<p>QT4Embedded &#8212; в молодости QTopia core, QT4 поверх QWS</p>
<p>QT4Extended &#8212; ранее QTopia, пакет приложений под QTE.</p>
<p>OE рулит &#8212; мы собрали QT Embedded widgets  и запустили его на том самом образе.</p>
<p>В процессе разобравшись с &#171;как же собрать qt4 приложение битбэйком&#187; и глюком TSLib, с патчем от 2007 года.</p>
<p>Всем понравилось и мы сделали прототип на QT4.</p>
<div id="attachment_1023" class="wp-caption alignnone" style="width: 410px"><img class="size-full wp-image-1023 " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/s.png" alt="s" width="400" height="240" /><p class="wp-caption-text">Прототип OTDR на B4 под QT Embedded 4.4.3, QWT Plot</p></div>
<p>А вот видео:</p>
<h3>Что в итоге</h3>
<p>QT</p>
<ul>
<li>&#171;out of the box&#187; приятней GTK</li>
<li>C++</li>
<li>легко меняется стиль внешнего вида</li>
<li>есть QT Creator способствующий разработке (нокиа крепко взялась за кьют)</li>
<li>QT под X-ами, увы, угнетающе по скорости на B4</li>
</ul>
<p>GTK</p>
<ul>
<li>проще внутри (Владимир со мной не согласен :)</li>
<li> С</li>
<li>быстрее процентов на 30 чем QT</li>
<li>для стилистики нужно применять engines и темы (кстати вот Sato из Poky оказался просто енжином)</li>
</ul>
<p><span style="text-decoration: underline;">Выбираем QT</span></p>
<p>ps. А Юра знал с самого начала :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2009/05/22/istoriya-razrabotki-novogo-ui-dlya-b4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Qt Embedded Widgets и b4</title>
		<link>http://blog.metrotek.spb.ru/2009/05/14/qt-embedded-widgets-i-b4/</link>
		<comments>http://blog.metrotek.spb.ru/2009/05/14/qt-embedded-widgets-i-b4/#comments</comments>
		<pubDate>Thu, 14 May 2009 14:19:15 +0000</pubDate>
		<dc:creator>Антон Фельдман</dc:creator>
				<category><![CDATA[b4]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=983</guid>
		<description><![CDATA[Пока народ безмолвствует стесняется сказать, я всё-таки сообщу о том, что нашим разработчикам удалось собрать Qt Embedded Widgets в системе openembedded/bitbake и запустить это на b4. Фотографий, к сожалению, не сделали. Более подробно о процессе сборки (со скриншотами и фотографиями прибора) ребята обещали рассказать на wiki. Надеюсь, что расскажут. На мой субъективный взгляд, смотрится намного [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/qtewdgs.png" alt="qtewdgs" title="qtewdgs" width="150" height="107" class="alignleft size-full wp-image-987" />Пока народ <s>безмолвствует</s> стесняется сказать, я всё-таки сообщу о том, что нашим разработчикам удалось собрать Qt Embedded Widgets в системе <a href="http://wiki.metrotek.spb.ru/wiki/OpenEmbedded/BitBake">openembedded/bitbake</a> и запустить это на b4. Фотографий, к сожалению, не сделали. Более подробно о процессе сборки (со скриншотами и фотографиями прибора) ребята обещали рассказать на wiki. Надеюсь, что расскажут. На мой субъективный взгляд, смотрится намного лучше, чем gtk. А на ваш?</p>
<p>И для затравки ролик из youtube с небольшой демонстрацией Qt Embedded Widgets<span id="more-983"></span>:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/SyUyYHSbViU&#038;hl=ru&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SyUyYHSbViU&#038;hl=ru&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Надо сказать, что на b4 они выглядят точно так же. Похоже, что будем использовать в своём проекте.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2009/05/14/qt-embedded-widgets-i-b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

