<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26309768</id><updated>2012-02-10T20:49:41.951+04:00</updated><category term='jquery'/><category term='qt'/><category term='javascript'/><category term='ajax'/><title type='text'>LestorN@QT</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26309768.post-6679050405181484041</id><published>2010-03-18T15:19:00.003+03:00</published><updated>2010-03-18T15:23:37.657+03:00</updated><title type='text'>Наследование от QDeclarativeItem. Маленький tip.</title><content type='html'>По умолчанию у QDeclarativeItem стоит флаг QGraphicsItem::ItemHasNoContents. Пол дня убил пока не раскопал почему программа не заходит в переопределённый метод paint моего компонента!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-6679050405181484041?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6679050405181484041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6679050405181484041'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2010/03/qdeclarativeitem-tip.html' title='Наследование от QDeclarativeItem. Маленький tip.'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-319185047885844274</id><published>2009-10-06T15:26:00.003+04:00</published><updated>2009-10-06T15:34:25.827+04:00</updated><title type='text'>Отображение rich text в item view.</title><content type='html'>Понадобилось мне тут отображать rich text в QTableView. По умолчанию такого поведения нет и полез я в исходники. Оказывается всё необходимое для сего есть. Посмотрел я на QLabel и наваял следующее:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;from PyQt4.QtCore import Qt&lt;br /&gt;from PyQt4.QtGui import *&lt;br /&gt;&lt;br /&gt;class RichTextItemDelegete(QAbstractItemDelegate):&lt;br /&gt;  def __init__(self, parent):&lt;br /&gt;      QAbstractItemDelegate.__init__(self, parent)&lt;br /&gt;&lt;br /&gt;  def paint(self, painter, option, index):&lt;br /&gt;      if option.state &amp;amp; QStyle.State_Selected:&lt;br /&gt;          painter.fillRect(option.rect, option.palette.highlight())&lt;br /&gt;   &lt;br /&gt;      painter.setBrush(QColor(Qt.black))&lt;br /&gt;      document = QTextDocument()&lt;br /&gt;      document.setHtml(index.data(Qt.DisplayRole).toString())&lt;br /&gt;      context = QAbstractTextDocumentLayout.PaintContext()&lt;br /&gt;      context.palette = option.palette&lt;br /&gt;   &lt;br /&gt;      if option.state &amp;amp; QStyle.State_Selected:&lt;br /&gt;          context.palette.setColor(QPalette.Text, Qt.white)&lt;br /&gt;      else:&lt;br /&gt;          context.palette.setColor(QPalette.Text, Qt.black);&lt;br /&gt;       &lt;br /&gt;      painter.save()&lt;br /&gt;      layout = document.documentLayout()&lt;br /&gt;      painter.translate(0, option.rect.y())&lt;br /&gt;      layout.draw(painter, context)&lt;br /&gt;      painter.restore()&lt;br /&gt;&lt;br /&gt;  def sizeHint(self, option, index):&lt;br /&gt;      document = QTextDocument()&lt;br /&gt;      document.setHtml(index.data(Qt.DisplayRole).toString())&lt;br /&gt;      layout = document.documentLayout()&lt;br /&gt;      return layout.documentSize().toSize()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Код как видите на питоне, но на С++ переносится чуть-ли не копипастой.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-319185047885844274?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/319185047885844274/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=319185047885844274' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/319185047885844274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/319185047885844274'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2009/10/rich-text-item-view.html' title='Отображение rich text в item view.'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-6909644720674554097</id><published>2009-01-19T09:24:00.002+03:00</published><updated>2009-01-19T09:28:56.055+03:00</updated><title type='text'>QtCreator и сборка плагина Designer</title><content type='html'>Если кто собирает QtCreator из git дерева, то можно заметить, что его плагин для редактирования форм не собирается. Так вот, чтобы собрать этот плагин, необходимо указать QTDIR на каталог где вы до этого вручную собирали саму Qt, так как этот плагин использует private headers. Ну и как вытекающее из этого неудобство, имеем необходимость сборки свежей версии Qt4.5 тоже из git.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-6909644720674554097?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6909644720674554097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6909644720674554097'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2009/01/qtcreator-designer.html' title='QtCreator и сборка плагина Designer'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-6407838996086769808</id><published>2009-01-14T12:04:00.001+03:00</published><updated>2009-01-14T12:06:53.729+03:00</updated><title type='text'>Qt 4.5 выйдет под LGPL</title><content type='html'>&lt;a href="http://labs.trolltech.com/blogs/2009/01/14/nokia-to-license-qt-under-lgpl/"&gt;http://labs.trolltech.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-6407838996086769808?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6407838996086769808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6407838996086769808'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2009/01/qt-45-lgpl.html' title='Qt 4.5 выйдет под LGPL'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-3960230156901821441</id><published>2008-12-30T09:05:00.002+03:00</published><updated>2008-12-30T09:07:55.388+03:00</updated><title type='text'>Тишина....</title><content type='html'>Сегодня нашел интересные параметр для qmake.&lt;br /&gt;&lt;br /&gt;CONFIG += silent&lt;br /&gt;&lt;br /&gt;При компиляции будут подовляться полный вывод запуска компилятора или служебных команд&lt;br /&gt;&lt;br /&gt;compiling main.cpp&lt;br /&gt;uic mainwindow.ui&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-3960230156901821441?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/3960230156901821441/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=3960230156901821441' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/3960230156901821441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/3960230156901821441'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2008/12/blog-post.html' title='Тишина....'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-2872124004076076390</id><published>2008-01-31T12:04:00.000+03:00</published><updated>2008-01-31T12:24:52.482+03:00</updated><title type='text'>Баг QtScript. (продолжение)</title><content type='html'>&lt;a href="http://lestornqt.blogspot.com/2008/01/qtscript.html"&gt;LestorN@QT: Баг QtScript.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Это был не баг!!! Долго не расписывая приведу ответ Троллей.&lt;br /&gt;&lt;br /&gt;Hi,&lt;br /&gt;There is no standard way of subclassing a "native" class. A setup like this should work, though:&lt;br /&gt;&lt;br /&gt;function ByteArraySub(n) {&lt;br /&gt;  var o = new ByteArray(n);&lt;br /&gt;  o.__proto__ = ByteArraySub.prototype;&lt;br /&gt;  return o;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ByteArraySub.prototype = new ByteArray();&lt;br /&gt;&lt;br /&gt;ByteArraySub.prototype.foo = function() { return this.length; }&lt;br /&gt;&lt;br /&gt;ba = new ByteArraySub(10);&lt;br /&gt;print(ba.foo());&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This approach can be used when "subclassing" any native class, e.g. the built in Array class too.&lt;br /&gt;&lt;br /&gt;Kent&lt;br /&gt;&lt;script&gt;&lt;!-- D(["mb","\u003cdiv style\u003d\"direction:ltr\"\u003e\u003cspan class\u003dsg\u003e\u003cbr /\u003e\u003cbr /\u003e--\u003cbr /\u003eTrolltech AS, Sandakerveien 116, NO-0402 Oslo, Norway\u003cbr /\u003e\u003c/span\u003e\u003c/div\u003e",0] ); D(["ce"]);  //--&gt;&lt;/script&gt;&lt;span class="sg"&gt;&lt;br /&gt;Ещё раз хочу сказать что Trolltech замечательная компания, и я очень надеюсь, что Nokia им только поможет!!!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-2872124004076076390?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/2872124004076076390/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=2872124004076076390' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2872124004076076390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2872124004076076390'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2008/01/qtscript_31.html' title='Баг QtScript. (продолжение)'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-8945111915267803230</id><published>2008-01-28T16:32:00.000+03:00</published><updated>2008-01-28T16:42:46.658+03:00</updated><title type='text'>Баг QtScript.</title><content type='html'>Разбираюсь я тут с QtScript. В 4.4 появился замечательный класс QScriptClass. Он позволяет создавать весьма динамические JavaScript объекты. Вобщем как заработает полностью, так обязательно подробно напишу, а пока меня заторозил неприятный баг (надеюсь что не фича).&lt;br /&gt;&lt;br /&gt;Вобщем класс создайтся и отлично работает, но если попытаться использовать такой класс в качестве прототипа, то проявляются 2 неприятных момента. Проиллюстрирую на примере немного модифицированного examples/script/customclass (что исключит влияние моих оч.умелых ручек)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function ByteArraySub(n) {&lt;br /&gt;    ByteArray.call(this, n);&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;ByteArraySub.prototype = new ByteArray();&lt;br /&gt; &lt;br /&gt;ba = new ByteArraySub(4);&lt;br /&gt;&lt;br /&gt;print(ba instanceof Object);&lt;br /&gt;print(ba instanceof ByteArray);  //!! тут мы увидим на экране false!!!&lt;br /&gt;print(ba instanceof ByteArraySub);&lt;br /&gt;&lt;br /&gt;print(ba.length);&lt;br /&gt;ba[1] = 123;&lt;br /&gt;print(ba[1]);&lt;br /&gt;ba[7] = 224;&lt;br /&gt;print(ba.length);&lt;br /&gt;result = '';&lt;br /&gt;for (var p in ba) {&lt;br /&gt;  if (result.length &gt; 0)&lt;br /&gt;    result += ', ';&lt;br /&gt;  result += '(' + p + ',' + ba[p] + ')';&lt;br /&gt;}&lt;br /&gt;print(result);&lt;br /&gt;ba.toBase64();   //!! А вот тут мы вообще падаем в корку.&lt;br /&gt;print(b64.toLatin1String());&lt;br /&gt;ba.valueOf();&lt;br /&gt;ba.chop(2);&lt;br /&gt;ba.length;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Баг тролям отправил, так что ждёмс подтверждения.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-8945111915267803230?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/8945111915267803230/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=8945111915267803230' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/8945111915267803230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/8945111915267803230'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2008/01/qtscript.html' title='Баг QtScript.'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-2397589471847478374</id><published>2008-01-23T09:23:00.000+03:00</published><updated>2008-01-23T09:52:04.217+03:00</updated><title type='text'>QAbstractFileEngine и QDirModel.</title><content type='html'>Есть в QT замечательная штука под названием QAbstractFileEngine. В двух словах это заготовка для построения VFS  в отдельно взятой программе. Вот цитата из документации:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;A QAbstractFileEngine subclass can be created to do synchronous network I/O based file system operations, local file system operations, or to operate as a resource system to access file based resources.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Собственно все операции с файлами (open, read, write, etc) идут именно через потомка этого класса QFSFileEngine. Также этот механизм используется для доступа к ресурсам (да-да, тот самый QIcon(":/icons/icon.png")).&lt;br /&gt;&lt;br /&gt;Таким образом создав 3 класса&lt;br /&gt;&lt;br /&gt;class MyFileEngineHandler : public QAbstractFileEngineHandler&lt;br /&gt;class MyFileEngine: public QAbstractFileEngine&lt;br /&gt;class MyFileEngineIterator : public QAbstractFileEngineIterator&lt;br /&gt;&lt;br /&gt;мы получаем собственноручно созданную VFS для наших нужд. В процессе экспериментов я создал  VFS  для отображения структуры  базы данных.&lt;br /&gt;&lt;br /&gt;sql:/localhost/dbname/table_name/columns.txt&lt;br /&gt;&lt;br /&gt;Работает!&lt;br /&gt;&lt;br /&gt;Теперь немного критики.&lt;br /&gt;1) (не шибко критичное) Выбор реализации QAbstractFileEngine происходит чеерз цепочку QAbstractFileEngineHandler куда передаётся имя файла как QString. Вероятно было бы не плохо задействовать для этих целей QUrl.&lt;br /&gt;2) QDirModel не поддерживает эту систему. Вернее обращение всегда происходит через QFSFileEngine. Таким образом без внедрения в QT решить проблему не получится.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-2397589471847478374?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/2397589471847478374/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=2397589471847478374' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2397589471847478374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2397589471847478374'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2008/01/qabstractfileengine-qdirmodel.html' title='QAbstractFileEngine и QDirModel.'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-2592758072974630113</id><published>2008-01-10T13:40:00.000+03:00</published><updated>2008-01-10T14:18:22.973+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>Новый год и все-все-все...</title><content type='html'>С прошедшими и наступающими так сказать!!!&lt;br /&gt;&lt;br /&gt;Отдых в НГ это святое. Включал компьютер только для просмотра свеженащёлканых фоток. Так что поздравляю как бы поздновато. А теперь по порядку.&lt;br /&gt;&lt;br /&gt;Снапшотов свежих нет, ну оно и понятно - НГ он и у шведов НГ. Зато разум освобождённый от информационного гула начал генерировать интересные идеи. К примеру теперь в рамках одной платформы можно внедрить в десктопное приложение вэб интерфейс! Ведь любой QObject можно добавить в WebKit и общаться уже с помощью JavaScript! Первые тесты показали, что при помощи jquery (на prototype забил) довольно легко редактировать табличку в БД непосредственно из web странички! Попытаюсь создать специальный объект который вёл бы себя аналогично AjaX'у. Вторая идея это преобразовывать ui файлы в html/javascript код, пока не совсем до меня дошло применение этих идей, так что обращаюсь ко всем кого это заинтересовало высказываться в коментариях.&lt;br /&gt;&lt;br /&gt;Пока писал с git появился новый срез. во все файлы внедрено упоминание о GPL Exception 1.1, на сайте троллей текста пока нет.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-2592758072974630113?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/2592758072974630113/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=2592758072974630113' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2592758072974630113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2592758072974630113'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2008/01/blog-post.html' title='Новый год и все-все-все...'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-6868605092388222615</id><published>2007-12-26T13:36:00.000+03:00</published><updated>2007-12-27T08:24:03.617+03:00</updated><title type='text'>Между делом...</title><content type='html'>Снапшоты 2 дня не обновляются - у троллей видать Рождество. Ну пусть отдохнут, у них ещ ё много работы впереди. Искренний им мои поздравления!&lt;br /&gt;&lt;br /&gt;А ведь есть в снапшотах фирменная генерилка документации! make qch. Правда она пишет в консоль массу предупреждений и в результате нет ни одной картинки, но видимо к релизу они это всё исправят. Генерит она и для старого асистента и для нового.&lt;br /&gt;&lt;br /&gt;Если будет время, завтра займусь добавлением proxy в демку браузера.&lt;br /&gt;&lt;br /&gt;Ковыряю WebKit. Нарисовал 2 таблички, обе показывают факториалы от 1 до 10, только одна заполняется жабаскриптом, а другая тоже им, только вычисления происходят в отдельном Qt классе. Работает! Кстати для работы сия конструкция ещё и &lt;a href="http://www.prototypejs.org"&gt;prototype&lt;/a&gt; использует. Завтра буду мучать Ajax только не спрашивайте зачем, сам не знаю! :)))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-6868605092388222615?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/6868605092388222615/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=6868605092388222615' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6868605092388222615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6868605092388222615'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2007/12/blog-post_26.html' title='Между делом...'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-2590456441096346169</id><published>2007-12-18T11:29:00.000+03:00</published><updated>2007-12-18T11:44:19.792+03:00</updated><title type='text'>Qt&amp;git</title><content type='html'>Все кому интересно следить за развитием Qt4.4 столкнулись на прошлой неделе с отсутствием свежих снапшотов Qt4.4 на ftp и rsync. Связано это по всей видимости с интегрированием в основную ветку WebKit и Phonon.&lt;br /&gt;В пятницу &lt;a href="http://labs.trolltech.com/blogs/author/simon/"&gt;Simon&lt;/a&gt; &lt;a href="http://labs.trolltech.com/blogs/2007/12/14/qtwebkit-development-update-4/"&gt;написал о этом знаменательном событии&lt;/a&gt;. Я спросил его на labs.trolltech.com когда эти изменения будут доступны привычным способом, и он ответил следующее:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I’m not sure about the status of ftp/rsync, but you can also find the Qt snapshots in Git at &lt;a href="http://labs.trolltech.com/gitweb?p=qt-snapshot;a=summary" rel="nofollow"&gt;http://labs.trolltech.com/gitweb?p=qt-snapshot;a=summary&lt;/a&gt; . The latest snapshot in the master branch contains yesterday’s snapshot. Stay tuned for more &lt;img src="http://labs.trolltech.com/blogs/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /&gt;&lt;/blockquote&gt;Раньше я подозревал что тролли используют git по его артефактам в снапшотах, но не думал что к нему есть публичный доступ! Пользуемся! Только не забываем, что там есть 2 ветки master и master-with-doc, различие я думаю понятно из их названия.&lt;br /&gt;&lt;br /&gt;C git я практически не знаком, так что просто скачал снапшот. Мог бы сделать git-clone но как я понимаю там должно быть несколько гигабайт инфы, а канал у меня не анлимный. Как разберусь с git, обязательно напишу. Так же жду советов по этому вопросу.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-2590456441096346169?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/2590456441096346169/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=2590456441096346169' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2590456441096346169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/2590456441096346169'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2007/12/qt.html' title='Qt&amp;git'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-1126835984315026483</id><published>2007-12-17T13:08:00.000+03:00</published><updated>2007-12-17T13:18:36.274+03:00</updated><title type='text'>Ура!!! Заработало!!!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_voL8mihLAdI/R2ZM8B-EbiI/AAAAAAAAABs/GD17avXz0ao/s1600-h/%D1%81%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_voL8mihLAdI/R2ZM8B-EbiI/AAAAAAAAABs/GD17avXz0ao/s320/%D1%81%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA1.png" alt="" id="BLOGGER_PHOTO_ID_5144884218522005026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://picasaweb.google.com/lestorn/QT/photo#5144883595751747074"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://picasaweb.google.com/lestorn/QT/photo#5144883595751747074" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="ftp://ftp.trolltech.com/qt/snapshots/qt-x11-opensource-src-4.4.0-snapshot-20071217.tar.bz2"&gt;Сегодняшний снапшот&lt;/a&gt; собирается полностью!!! WebKit и Phonon работают!!! Правда для сборки того и другого пришлось явно указать ключи (-webkit -phonon).&lt;br /&gt;Немного инструкций:&lt;br /&gt;&lt;br /&gt;1) У phonon собирается но не устанавливается  его plugin, так что копируем ручками.&lt;br /&gt;2) Демо браузера не поддерживает proxy.&lt;br /&gt;3) examples/phonon/musicplayer не дружит с UTF-8 в тегах. Если кому надо выложу рецепт.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-1126835984315026483?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/1126835984315026483/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=1126835984315026483' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/1126835984315026483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/1126835984315026483'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2007/12/blog-post_17.html' title='Ура!!! Заработало!!!'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_voL8mihLAdI/R2ZM8B-EbiI/AAAAAAAAABs/GD17avXz0ao/s72-c/%D1%81%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-9040352472537005217</id><published>2007-12-14T08:23:00.000+03:00</published><updated>2007-12-14T08:25:45.675+03:00</updated><title type='text'>WebKit и Phonon</title><content type='html'>Вчера наконецто появились сыежие снапшоты!!! В них разместили WebKit и Phonon. Ни то ни другое пока не собирается. Багов при сборке правда поуменьшилось (см. &lt;a href="http://lestornqt.blogspot.com/2007/11/blog-post.html#links"&gt;http://lestornqt.blogspot.com/2007/11/blog-post.html#links&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-9040352472537005217?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/9040352472537005217/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=9040352472537005217' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/9040352472537005217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/9040352472537005217'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2007/12/webkit-phonon.html' title='WebKit и Phonon'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-4288483571096257152</id><published>2007-12-12T07:53:00.000+03:00</published><updated>2007-12-12T07:55:23.763+03:00</updated><title type='text'>Где снапшоты???</title><content type='html'>Третий день нет свежатины, кто знает почему?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-4288483571096257152?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/4288483571096257152/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=4288483571096257152' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/4288483571096257152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/4288483571096257152'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2007/12/blog-post.html' title='Где снапшоты???'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-6789575567498998467</id><published>2007-11-27T14:40:00.000+03:00</published><updated>2007-12-14T08:22:58.144+03:00</updated><title type='text'>Как собрать текущие снапшоты</title><content type='html'>Уже несколько дней свежие снапшоты Qt4.4 не собираются. Поэтому помучившись и всё-таки собрав свежак хочу поделиться рецептом сборки.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;s&gt;Первое, на чём стопориться сборка, это сборка поддержки сети. Лечится простым удалением файлов &lt;span style="font-family:courier new;"&gt;src/network/qnetworkproxy.cpp&lt;/span&gt; и &lt;span style="font-family:courier new;"&gt;src/network/qnetworkproxy.h&lt;/span&gt;&lt;br /&gt;&lt;/s&gt;&lt;/li&gt;&lt;li&gt;&lt;s&gt;Второе, это дизайнер.  Лечится путём изменения файла &lt;span style="font-family:courier new;"&gt;tools/designer/src/components/propertyeditor/propertyeditor.pri&lt;/span&gt;. В нём удаляем строку  и дописываем в &lt;span style="font-family:courier new;"&gt;include($$QT_SOURCE_TREE/tools/shared/qtgradienteditor/qtcolorbutton.pri) SOURCES&lt;/span&gt; и &lt;span style="font-family:courier new;"&gt;HEADERS&lt;/span&gt; соответственно, &lt;span style="font-family:courier new;"&gt;$$PWD/qtcolorbutton.h&lt;/span&gt; и &lt;span style="font-family:courier new;"&gt;$$PWD/qtcolorbutton.cpp&lt;/span&gt;&lt;/s&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;s&gt;Утилку patternist и некоторые примеры в которых происходит подобная ошибка я просто не собираю исключая их из сборки комментированием соответствующих строк. Мне это не нужно и некогда возиться, так что пишите решение если найдёте, включу в этот FAQ.&lt;/s&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;В &lt;span style="font-family:courier new;"&gt;examples/help/contextsensitivehelp/wateringconfigdialog.ui&lt;/span&gt; в конце &lt;s&gt;просто не стоит закрывающая угловая скобка&lt;/s&gt; теперь нет целого закрывающего тега &lt;/ui&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;s&gt;В &lt;span style="font-family:courier new;"&gt;examples/linguist/arrowpad/arrowpad.pro&lt;/span&gt; удалить пустую строку в секции &lt;span style="font-family:courier new;"&gt;TRANSLATIONS&lt;/span&gt;.&lt;/s&gt;&lt;/li&gt;&lt;/ul&gt;Пока всё. Жду дополнений и сам буду их сюда вносить по мере появления или удаления глюков в текущих снапшотах.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-6789575567498998467?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/6789575567498998467/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=6789575567498998467' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6789575567498998467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/6789575567498998467'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2007/11/blog-post.html' title='Как собрать текущие снапшоты'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-115753899189147252</id><published>2006-09-06T14:28:00.000+04:00</published><updated>2006-09-07T08:34:50.820+04:00</updated><title type='text'>Qt4.2-RC1. Интересные моменты</title><content type='html'>&lt;p style="margin-bottom: 0in;" align="center"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QAbstractButton&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Теперь можно задавать режим повторения кнопки. Пока кнопка нажата с заданным интервалом посылается сигнал clicked(). Это свойство не работает для кнопок фиксирующих своё положение (toggle buttons). Настраивается это поведение следующими свойствами: &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;autoRepeat : bool &lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;autoRepeatDelay : int&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;autoRepeatInterval : int&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QАbstractItemView&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность указывать поведение при вертикальной и горизонтальной прокрутке. Прокручивать теперь можно, либо по итему (QAbstractItemView::ScrollPerItem), либо попиксельно (QabstractItemView::ScrollPerPixel). Поведение задаётся отдельно для вертикальной и горизонтальной прокрутки. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;horizontalScrollMode : ScrollMode&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;verticalScrollMode : ScrollMode&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QAbstractScrollArea&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность добавлять виджеты сверху или снизу от вертикальой, и слева или справа от горизонтальной полосы прокрутки. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QAbstractScrollArea::addScrollBarWidget ( QWidget * widget, Qt::Alignment alignment )&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Так же появилась возможность устанавливать виджет в их угол. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QAbstractScrollArea::setCornerWidget ( QWidget * widget )&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QAction&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Как и для QAbstractButton появилась возможность задавать повторения и для QAction. Повторения осуществляются при удерживаниии клавиатурной комбинации, соответствующей данному QAction. Параметры повторения зависят от глобальных настроек системы. По умолчанию данное поведение включено. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;autoRepeat : bool&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QButtonGroup&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; QButtonGroup теперь посылает сигналы от его кнопок со ссылкой на кнопку пославшую сигнал. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QButtonGroup::buttonPressed ( QAbstractButton * button ) [signal]&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QButtonGroup::buttonPressed ( int id ) [signal]&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QButtonGroup::buttonReleased ( QAbstractButton * button ) [signal]&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QButtonGroup::buttonReleased ( int id ) [signal]&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QDataWidgetMapper&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt; Хоть я и обещал не касаться новшеств системы, но для этого класса изменю своему правилу. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; QDataWidgetMapper предоставляет соответствие между секциями модели данных и виджетами. Каждый раз при изменении текущего итема модели, ассоциированные виджеты обновляются в соответствии с данными модели. При редактировании данных в этих виджетах, данные заносятся обратно в модель. Также возможно использование делегатов для ассоциирования с нестандартными виджетами. &lt;/p&gt;    &lt;p style="margin-bottom: 0in;"&gt; Пусть дана модель model со следующими данными: &lt;/p&gt; &lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" width="100%"&gt; &lt;col width="85*"&gt; &lt;col width="85*"&gt; &lt;col width="85*"&gt; &lt;tbody&gt;&lt;tr valign="top"&gt; &lt;td width="33%"&gt; &lt;p&gt; 1 &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Trolltech ASA &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Oslo &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="33%"&gt; &lt;p&gt; 2 &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Trolltech Pty &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Brisbane &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="33%"&gt; &lt;p&gt; 3 &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Trolltech Inc &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Palo Alto &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="33%"&gt; &lt;p&gt; 4 &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Trolltech China &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Beijing &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="33%"&gt; &lt;p&gt; 5 &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Trolltech GmbH &lt;/p&gt; &lt;/td&gt; &lt;td width="33%"&gt; &lt;p&gt; Berlin &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="margin-bottom: 0in;"&gt; Следующий код показывает как установить для данной модели ассоциации с виджетами: &lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: courier new;"&gt; QDataWidgetMapper *mapper = new QDataWidgetMapper; &lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: courier new;"&gt; mapper-&amp;gt;setModel(model); &lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: courier new;"&gt; mapper-&amp;gt;addMapping(mySpinBox, 0); &lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: courier new;"&gt; mapper-&amp;gt;addMapping(myLineEdit, 1); &lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: courier new;"&gt; mapper-&amp;gt;addMapping(myCountryChooser, 2); &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:courier new;"&gt; mapper-&amp;gt;toFirst();&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QDate&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Наконец-то появилась возможность установить дату не сломав себе шею. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;bool QDate::setDate ( int year, int month, int day )&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QDateTimeEdit&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность автоматически вызывать виджет календаря при редактировании даты. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;calendarPopup : bool&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QHash и QMap&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Полезная функция для получения уникальных ключей. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;QList&amp;lt;Key&amp;gt; QHash::uniqueKeys () const&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QLibrary&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Наконец-то QLibrary будет сообщать о своих ошибках. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;QString QLibrary::errorString () const&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QListView&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность свёртывания строк. Естественно отключенная по умолчанию. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;wordWrap : bool&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QListWidgetItem&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Теперь можно задавать фон и передний план для каждого итема. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QListWidgetItem::setBackground ( const QBrush &amp; brush )&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QListWidgetItem::setForeground ( const QBrush &amp; brush )&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QLocale&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Думаю, что так же полезна будет функция сообщения имени дня в соответствующей локали. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;QString QLocale::dayName ( int day, FormatType type = LongFormat ) const&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QMainWindow&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Все действия с прикреплёнными виджетами (dock widgets) теперь красиво анимируются по умолчанию. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;animationEnabled : bool&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt; Если у вас достаточно много прикреплённых виджетов, то их можно теперь объединять перетаскиванием. И переключаться между ними при помощи появляющихся при этом закладок. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;dockNestingEnabled : bool&lt;/b&gt; &lt;/p&gt;   &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QPrinter&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Теперь можно печатать не только на принтер и в PDF, но и создавать PostScript документы (Qprinter::PostScriptFormat). &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;enum QPrinter::OutputFormat&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QProgressBar&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность устанавливать формат для отображённых цифр. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; %p – завершено в процентах. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; %v – текущее значение &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; %m – общее количество шагов &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; По умолчанию формат такой: "%p%". &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;format : QString&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QSortFilterProxyModel&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возожность динамически фильтровать и сортировать данные при изменении исходной модели. По умолчанию отключено. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;dynamicSortFilter : bool&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Так же появилась возможность задавать регистронезависимую сортировку. По умолчанию сортировка учитывает регистр. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;sortCaseSensitivity : Qt::CaseSensitivity&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QTableView&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность объединения ячеек в таблице!!! &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QTableView::setSpan ( int row, int column, int rowSpan, int columnSpan )&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QTextTableCell&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Наконец-то появилась возможность задания формата каждой ячейки в таблице. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QTextTableCell::setFormat ( const QTextCharFormat &amp; format )&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QTextTableFormat&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Появилась возможность задавать число строк заголовка таблицы, который будет повторяться при пересечении таблицей границы листа. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QTextTableFormat::setHeaderRowCount ( int count )&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="center"&gt; &lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;QTreeView&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; Теперь без лишних телодвижение можно раскрыть и закрыть всё дерево. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QTreeView::expandAll () [slot]&lt;/b&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;b&gt;void QTreeView::collapseAll () [slot]&lt;/b&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-115753899189147252?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/115753899189147252/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=115753899189147252' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115753899189147252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115753899189147252'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/09/qt42-rc1.html' title='Qt4.2-RC1. Интересные моменты'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-115682654519320778</id><published>2006-08-29T08:37:00.000+04:00</published><updated>2006-08-29T08:42:25.210+04:00</updated><title type='text'>QThread</title><content type='html'>Нигде толком не описано поведение этого класса при выходе из функции QThread::run(). Оказывается, после выхода из этой функции вызывается деструстор класса! Причём QThread::setTerminationEnabled(bool)  на это поведение не влияет. Проверено на Qt4.1.4.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-115682654519320778?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/115682654519320778/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=115682654519320778' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115682654519320778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115682654519320778'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/08/qthread.html' title='QThread'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-115648483827793716</id><published>2006-08-25T09:44:00.000+04:00</published><updated>2006-08-25T09:47:18.286+04:00</updated><title type='text'>PCH</title><content type='html'>Если вы используете компилятор который поддерживает precompiled headers, то используйте это сойство во благо себе. Так мне сегодня удалось поднять скорость сборки одной программы с двух с половиной минут до 50 секунд! Причём так как программа находится в стадии активной разработки, в файл pch.h я включил только заголовки от Qt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-115648483827793716?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/115648483827793716/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=115648483827793716' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115648483827793716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115648483827793716'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/08/pch.html' title='PCH'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-115639805299052375</id><published>2006-08-24T09:32:00.000+04:00</published><updated>2006-08-24T09:40:53.006+04:00</updated><title type='text'>QTabWidget::setCornerWidget()</title><content type='html'>Ещё одно странное певедение в Qt4.1.4.&lt;br /&gt;Предположим, что есть экземпляр QMainWindow и в нём следующий код:&lt;br /&gt;&lt;br /&gt;m_twWindows = new QTabWidget(this);&lt;br /&gt;QToolButton *tb = new QToolButton(m_twWindows);&lt;br /&gt;tb-&gt;setDefaultAction(new QAction(QIcon(":icons/close.png"), trUtf8("Закрыть"), this)); //!!!&lt;br /&gt;m_twWindows-&gt;setCornerWidget(tb, Qt::TopRightCorner);&lt;br /&gt;setCentralWidget(m_twWindows);&lt;br /&gt;m_twWindows-&gt;setTabPosition(QTabWidget::North);&lt;br /&gt;&lt;br /&gt;Так вот,  если строки инициализации и настройки QToolButton перенести после setCentralWidget, то кнопка не появится! Правда есть обход этой ситуации. Центральным виджетом сделать экземпляр QWidget и на него положить m_twWindows, то порядок строк не имеет значения. Вот так вот...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-115639805299052375?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/115639805299052375/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=115639805299052375' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115639805299052375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115639805299052375'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/08/qtabwidgetsetcornerwidget.html' title='QTabWidget::setCornerWidget()'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-115622943068511582</id><published>2006-08-22T10:37:00.000+04:00</published><updated>2006-08-22T10:56:25.863+04:00</updated><title type='text'>Странное поведение QFormBuilder</title><content type='html'>В версии QT4.1.4 наткнулся на следующий глюк. Если в начале ui файла добавить стандартный XML заголовок:&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;и попытаться загрузить его с помощью QFormBuilder или QUiLoader (который пользуется первым внутри себя) , то форма не будет создана. Метод load() вернёт 0. Аналогично и при попытке загрузить изменённый таким образом файл в дизайнер ничего хорошего вы не увидите. Вернее он скажет так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7006/803/1600/qtderr.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7006/803/320/qtderr.png" alt="" border="0" /&gt;&lt;/a&gt;QT4.2 snapshot-20060816 ведёт себя так же. Баг этот я запостил в троллевский багтрекер, номер вроде присвоили #126689, но пока я его там не нахожу.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-115622943068511582?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/115622943068511582/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=115622943068511582' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115622943068511582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115622943068511582'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/08/qformbuilder.html' title='Странное поведение QFormBuilder'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-115528841440535323</id><published>2006-08-11T13:21:00.000+04:00</published><updated>2006-08-11T13:28:52.256+04:00</updated><title type='text'>Отладка QSqlTableModel</title><content type='html'>Если при отладке программы использующей  QSqlTableModel вам необходимо видеть SQL запросы которые она генерирует используйте сигналы&lt;br /&gt;&lt;br /&gt;void QSqlTableModel::beforeDelete ( int row )&lt;br /&gt;void QSqlTableModel::beforeInsert ( QSqlRecord &amp; record )&lt;br /&gt;void QSqlTableModel::beforeUpdate ( int row, QSqlRecord &amp;amp; record )&lt;br /&gt;&lt;br /&gt;Например так&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;void AbstractDirectory::beforeInsert(QSqlRecord &amp;rec) {&lt;br /&gt;    QSqlDriver *driver = QSqlDatabase::database().driver();&lt;br /&gt;    bool prepStatement = driver-&gt;hasFeature(QSqlDriver::PreparedQueries);&lt;br /&gt;    QString stmt = driver-&gt;sqlStatement(QSqlDriver::InsertStatement, _itemTableName, rec, prepStatement);&lt;br /&gt;    qDebug &lt;&lt; stmt;&lt;br /&gt;}&lt;br /&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-115528841440535323?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/115528841440535323/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=115528841440535323' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115528841440535323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/115528841440535323'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/08/qsqltablemodel.html' title='Отладка QSqlTableModel'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-114855400625886609</id><published>2006-05-25T14:35:00.000+04:00</published><updated>2006-05-25T14:46:46.270+04:00</updated><title type='text'>QTextDocument tip.</title><content type='html'> Если необходимо наполнить QTextDocument про помощи QTextCursor, то чтобы не удивляться тормознутости этой операции _НИКОГДА_ не делайте так:&lt;br/&gt;&lt;br/&gt;QTextEdit textEdit;&lt;br/&gt;QTextDocument *document = textEdit.document();&lt;br/&gt;и далее начинаем с этим документом работать....&lt;br/&gt;&lt;br/&gt;Во время редактирования такого документа, QTextEdit будет пытаться его отобразить при каждом изменении, и таким образом вся эта системя будет чудовищно тормозить.&lt;br/&gt;&lt;br/&gt;Создавайте документ отдельно, и когда его будет нужно отобразить подключаёте документ к QTextEdit:&lt;br/&gt;&lt;br/&gt;QTextEdit textEdit;&lt;br/&gt;QTextDocument *document = new QTextDocument(&amp;textEdit); // установить textEdit родителем документа необходимо чтобы при замене документа текущий удалялся, а не висел в пямяти.&lt;br/&gt;/* наполняем документ */&lt;br/&gt;textEdit.setDocument(document);&lt;br/&gt;&lt;br/&gt;У меня при составлении одного документа скорость поднялась с 11 секунд до 400 милисекунд!!!&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-114855400625886609?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/114855400625886609/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=114855400625886609' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/114855400625886609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/114855400625886609'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/05/qtextdocument-tip.html' title='QTextDocument tip.'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-114533406307206739</id><published>2006-04-18T08:15:00.000+04:00</published><updated>2006-04-18T15:29:41.150+04:00</updated><title type='text'>QSqlRelationalTableModel::setFilter(const QString &amp; filter)</title><content type='html'>Есть в этом методе одна недокументированая особенность связаная с внешними ключами.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Если ни одно отношение (&lt;a href="http://doc.trolltech.com/4.1/qsqlrelation.html"&gt;QSqlRelation&lt;/a&gt;) в модель не добавлено, то её поведение ни чем не отличается от модели &lt;a href="http://doc.trolltech.com/4.1/qsqltablemodel.html"&gt;QSqlTableModel&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Если добавлено хотя бы одно отношение, то для колонок без отношения строка фильтра должна выглядеть как "таблица.колонка = значение" (оператор сравнения естественно заменяем тем чем нам необходимо).&lt;/li&gt;&lt;li&gt;Если добавлено хотя бы одно отношение, то для колонок с отношением строка фильтра должна выглядеть как "колонка = значение", но вместо имени колонки в таблице указанной методом &lt;a href="http://doc.trolltech.com/4.1/qsqltablemodel.html#setTable"&gt;QSqlRelationalTableModel::setTable()&lt;/a&gt; необходимо подставлять имя колонки указанной при создании отношения &lt;a href="http://doc.trolltech.com/4.1/qsqlrelation.html#displayColumn"&gt;QSqlRelation::displayColumn()&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;Вот пример работающего кода:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;QHash&amp;lt;QString, QString&amp;gt; filters; //ключ - имя колонки, значение - значение фильтра&lt;br /&gt;QStringList filter;&lt;br /&gt;QString tableName = table-&amp;gt;tableName();&lt;br /&gt; &lt;br /&gt;foreach(QString key, filters.keys())&lt;br /&gt; if(_model-&amp;gt;relation(_model-&gt;record().indexOf(key)).isValid()) {&lt;br /&gt;  filter &amp;lt;&amp;lt; key + "='" + filters.value(key) + "'";&lt;br /&gt; } else {&lt;br /&gt;  filter &amp;lt;&amp;lt; tableName + "." + key + "='" + filters.value(key) + "'";&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;_model-&amp;gt;setFilter(filter.join(" AND "));&lt;br /&gt;_model-&amp;gt;select();&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-114533406307206739?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/114533406307206739/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=114533406307206739' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/114533406307206739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/114533406307206739'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/04/qsqlrelationaltablemodelsetfilterconst.html' title='QSqlRelationalTableModel::setFilter(const QString &amp; filter)'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26309768.post-114527707148954121</id><published>2006-04-17T16:26:00.000+04:00</published><updated>2006-04-18T08:13:20.410+04:00</updated><title type='text'>Начало.</title><content type='html'>В этом блоге я буду описывать свой опыт программирования с использованием библиотеки &lt;a href="http://www.trolltech.com"&gt;QT&lt;/a&gt;. Я использую версию QT4.1.2 так что до выхода следующей версии все статьи будут касаться именно этой версии. Буду рад также комментариям к моим изысканиям.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26309768-114527707148954121?l=lestornqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lestornqt.blogspot.com/feeds/114527707148954121/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26309768&amp;postID=114527707148954121' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/114527707148954121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26309768/posts/default/114527707148954121'/><link rel='alternate' type='text/html' href='http://lestornqt.blogspot.com/2006/04/blog-post.html' title='Начало.'/><author><name>LestorN</name><uri>http://www.blogger.com/profile/17864792228865939904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_voL8mihLAdI/R4X11B-EbkI/AAAAAAAAAB4/YitJQJV6OVE/S220/preferences-desktop.png'/></author><thr:total>0</thr:total></entry></feed>
