<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / Комментарии к посту «Сериализация в Qt через использование MetaObject» в блоге «Qt Software»</title>
	<link>http://habrahabr.ru/rss/post/83374/</link>
	<description><![CDATA[Новые комментарии к посту «Сериализация в Qt через использование MetaObject» в блоге «Qt Software»]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 14:46:50 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	

	
	
	
	
	
		
	
		<item>
			<title>08.02.2010 08:33:13 rule</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2485882</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2485882</link>
			<description><![CDATA[<a href="http://englich.wordpress.com/2008/10/23/xml-to-qobjects-qxmltoqobjectcreator/">englich.wordpress.com/2008/10/23/xml-to-qobjects-qxmltoqobjectcreator/</a> — но он только в ресече, но можно уже им пользоватся.<br/>
<br/>
Если подумать, то можно еще пару десятков методов наплодить :-), предалагемый автором, один из них.<br/>
<br/>
Удачи автору в «хаке», и добро пожаловать в хабрасообщество.]]></description>
			<pubDate>Mon, 08 Feb 2010 08:33:13 GMT</pubDate>
			<author>rule</author>
		</item>
	

	
		<item>
			<title>08.02.2010 08:31:58 rule</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2485875</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2485875</link>
			<description><![CDATA[Хоть и дал инвайт автору, но со статьей немножко не согласен (основная цель — привлеч Qt-шников в хабл :-) даешь нас больше :-) )<br/>
Так вот не очень понравилась идея наследования и сторонних классов, как по мне то удобнее непосредственно перекрыть метод &gt;&gt; и &lt;&lt; самого датастрима, гдето так, особенно в коде не уверен, я его не проверял:<br/>
<br/>
<blockquote><code><font color="black">QDataStream &<font color="#0000ff">operator</font>&gt;&gt;(QDataStream &ds, Object &obj) {<br/>
&nbsp;&nbsp;QVariant <font color="#0000ff">var</font>;<br/>
&nbsp;&nbsp;<font color="#0000ff">for</font>(<font color="#0000ff">int</font> i=0; i&lt;obj.metaObject()-&gt;propertyCount(); ++i) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>(obj.metaObject()-&gt;property(i).isStored(&obj)) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds &gt;&gt; <font color="#0000ff">var</font>;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.metaObject()-&gt;property(i).write(&obj, <font color="#0000ff">var</font>);<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;<font color="#0000ff">return</font> ds;<br/>
}</font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font></code></blockquote><br/>
<br/>
Используя перекрытие именно таким образом, можно вообще к метаданным и не грестись, а серилизовать нужные нам поля, даже если они не являются свойствами, плюс можно также серизовать данные данные из приватного класса (если используется Pimp — паттерн). Также возможно воспользоватся полиморфизмом, если есть иерархия.<br/>
<br/>
Вторая вещь — это можно перекрыть эти же меетоды в QTextStream — и сделать сериализацию в виде XML.<br/>
Но есть еще одно решение для XML сериализации:<br/>
<br/>
]]></description>
			<pubDate>Mon, 08 Feb 2010 08:31:58 GMT</pubDate>
			<author>rule</author>
		</item>
	

	
		<item>
			<title>07.02.2010 22:59:04 Gorthauer87</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2484804</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2484804</link>
			<description><![CDATA[У меня идея была сбросить контакт лист qutIMа, но я сейчас тестю его новую реинкарнацию и по ощущениям он почти мгновенно генерируется. Хотя в 0.2 он тормозил, от этого такие мысли и возникали. А больше у нас наверное и нечего такого крупного сериализовать. Только если всё сразу целиком :) ]]></description>
			<pubDate>Sun, 07 Feb 2010 22:59:04 GMT</pubDate>
			<author>Gorthauer87</author>
		</item>
	

	
		<item>
			<title>07.02.2010 21:11:12 Lazer1999</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2484370</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2484370</link>
			<description><![CDATA[По времени не знаю, думаю ради только этого игра свеч может и не стоит (хотя… хависит от кол-ва объектов различных класов). В а универсальности сброса — хоть на диск, хоть в инет через поток, хоть просто в память… Да мало ли применений стандартному потоку придумать можно…]]></description>
			<pubDate>Sun, 07 Feb 2010 21:11:12 GMT</pubDate>
			<author>Lazer1999</author>
		</item>
	

	
		<item>
			<title>07.02.2010 21:08:18 Gorthauer87</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2484362</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2484362</link>
			<description><![CDATA[Интересненько, вот думаю, насколько можно выиграть во времени загрузки, если вместо инициализации сложных объектов, просто их сериализовать и сбрасывать на диск, а потом десериализовать]]></description>
			<pubDate>Sun, 07 Feb 2010 21:08:18 GMT</pubDate>
			<author>Gorthauer87</author>
		</item>
	

	
		<item>
			<title>07.02.2010 20:37:03 Lazer1999</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2484187</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2484187</link>
			<description><![CDATA[Спасибо. Поправил. А также добавил пункты про свойства-объекты и возню с ними. <strike>Геморроя</strike>Работы много, зато эффект налицйо — польностью рабочая системка, где можно сериалиазовать объект «от корней до самых кончиков»]]></description>
			<pubDate>Sun, 07 Feb 2010 20:37:03 GMT</pubDate>
			<author>Lazer1999</author>
		</item>
	

	
		<item>
			<title>07.02.2010 19:33:48 mono2k</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2483876</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2483876</link>
			<description><![CDATA[предЫстория, а в по содержанию — познавательно, спасибо.]]></description>
			<pubDate>Sun, 07 Feb 2010 19:33:48 GMT</pubDate>
			<author>mono2k</author>
		</item>
	

	
		<item>
			<title>07.02.2010 18:39:16 OS2</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2483631</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2483631</link>
			<description><![CDATA[Возьмем на заметку. Автору большое спасибо!]]></description>
			<pubDate>Sun, 07 Feb 2010 18:39:16 GMT</pubDate>
			<author>OS2</author>
		</item>
	

	
		<item>
			<title>07.02.2010 18:08:30 Lazer1999</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2483532</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2483532</link>
			<description><![CDATA[Спасибо за ссылку. Как мне кажется, Я просто не ставил Q_INVOKABLE для конструкторов, поэтому при их вызове всё «рушилось». Надо будет проверить, и если всё ок, статья обретет новый и законченный смысл, так как останется лишь ограничение по тому что если используем указатель в виде свойста — его на выходе и получим. С указателями надо будет както «допиливать».]]></description>
			<pubDate>Sun, 07 Feb 2010 18:08:30 GMT</pubDate>
			<author>Lazer1999</author>
		</item>
	

	
		<item>
			<title>07.02.2010 17:08:57 fuCtor</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2483385</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2483385</link>
			<description><![CDATA[В чем заключалась некоректность?<br/>
<br/>
Хотя самый правильный способ использовать <a href="http://doc.qt.nokia.com/4.6/qmetaobject.html#newInstance">newInstance</a>. Надо будет поэкспериментировать.<br/>
<br/>
Пока только использовал метаобъекты для автоматической регистрации «сервисов» в XMLRPC сервере. Надо будет оформить топик наверно, допилить лишь только код )]]></description>
			<pubDate>Sun, 07 Feb 2010 17:08:57 GMT</pubDate>
			<author>fuCtor</author>
		</item>
	

	
		<item>
			<title>07.02.2010 16:55:09 Lazer1999</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2483338</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2483338</link>
			<description><![CDATA[Есть идеи для модификации/апгрейцда конструкции:<br/>
1. Поток поддерживаеит передачу информацию о версии. Внедрить контроль версии.<br/>
2. В metapropertyu имя класса и так автоматически введено. Поэтому — передается. Соответственно наша задача — лишбь его проконтролировать… <br/>
3.Есть идея как обойти проблему того что QObject нрельзщя напрямукю сделать свойством (Q_DISABLE_COPY в базовом классе QObject). Есть одна идейка основанная на реализации конструктора копирования и регистрации метатипа.<br/>
4.Касаемо непосредственно вашей идеи — имел некоторые грабли с автоматическим конструированием объектов через QMetaObject::construct. Не всегда дефолтный конструктор отрабатывал как хотелось как результат получали вылеты. Пока что — разбираюсь с тем как корректно создавать экземпляры объектов со свойствами через метатип.<br/>
<br/>
Надеюсь завтра часть информации выяснить и дополнить статью.<br/>
<br/>
P.S. не бейте сильно Qt я занялся относительно недавно, всего пару месяцев. До этого шарпом занимался, поэтому нюансы объектной системы могу и не знать :)]]></description>
			<pubDate>Sun, 07 Feb 2010 16:55:09 GMT</pubDate>
			<author>Lazer1999</author>
		</item>
	

	
		<item>
			<title>07.02.2010 15:28:27 fuCtor</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/qt_software/83374/#comment_2483070</guid>
			<link>http://habrahabr.ru/blogs/qt_software/83374/#comment_2483070</link>
			<description><![CDATA[Добавить в начале еще имя\ID сериализуемого класса + сделать «менеджер» таких классов, по типу qRegisterMetaType и можно принимая поток на вход на выходе иметь готовые экземпляры класса без дополнительных телодвижений. Удобно если классы имеют общий интерфейс.]]></description>
			<pubDate>Sun, 07 Feb 2010 15:28:27 GMT</pubDate>
			<author>fuCtor</author>
		</item>
	

	
</channel>
</rss>

