﻿﻿<?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>Comment programmer avec Qt c++ &#187; Blog Qt</title>
	<atom:link href="http://comment-apprendre.com/qt-cpp/category/blog-qt/feed" rel="self" type="application/rss+xml" />
	<link>http://comment-apprendre.com/qt-cpp</link>
	<description>Utiliser Qt - Ce que j&#039;ai appris</description>
	<lastBuildDate>Fri, 06 Jul 2012 16:11:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Du HTML dans un QTableView</title>
		<link>http://comment-apprendre.com/qt-cpp/du-html-dans-un-qtableview/blog-qt</link>
		<comments>http://comment-apprendre.com/qt-cpp/du-html-dans-un-qtableview/blog-qt#comments</comments>
		<pubDate>Mon, 03 Oct 2011 20:44:03 +0000</pubDate>
		<dc:creator>qt-programmer</dc:creator>
				<category><![CDATA[Blog Qt]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[mightBeRichText]]></category>
		<category><![CDATA[paint]]></category>
		<category><![CDATA[QStyledItemDelegate]]></category>

		<guid isPermaLink="false">http://comment-apprendre.com/qt-cpp/?p=40</guid>
		<description><![CDATA[Qt ne permet pas d&#8217;inclure du HTML dans un tableau ou un liste Par contre, il est possible d&#8217;arriver à dessiner du &#8220;rich text&#8221; grâce à un delegate. Pour ce qui est de l&#8217;implémentation d&#8217;un delegate, je vous épargne la théorie, c&#8217;est relativement facile, il n&#8217;y a qu&#8217;à voir les centaines d&#8217;exemples sur le web<a href="http://comment-apprendre.com/qt-cpp/du-html-dans-un-qtableview/blog-qt">&#160;&#160;[ Lire plus ]</a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcomment-apprendre.com%2Fqt-cpp%2Fdu-html-dans-un-qtableview%2Fblog-qt"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcomment-apprendre.com%2Fqt-cpp%2Fdu-html-dans-un-qtableview%2Fblog-qt&amp;source=MartinGamsby&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Qt ne permet pas d&#8217;inclure du HTML dans un tableau ou un liste <img src='http://comment-apprendre.com/qt-cpp/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Par contre, il est possible d&#8217;arriver à dessiner du &#8220;rich text&#8221; grâce à un delegate.</p>
<p>Pour ce qui est de l&#8217;implémentation d&#8217;un delegate, je vous épargne la  théorie, c&#8217;est relativement facile, il n&#8217;y a qu&#8217;à voir les centaines  d&#8217;exemples sur le web à ce sujet.</p>
<p>Cherchez &#8216;HTML OR &#8220;Rich text&#8221; Qt QStyledItemDelegate&#8217; &#8230; ou quelque  chose du genre pour y arriver, parce qu&#8217;effectivement, on doit hériter  de QStyledItemDelegate.</p>
<p>Poiur ce qui est de la méthode paint() surchargée, voici un exemple fonctionnel :</p>
<blockquote>
<pre style="font-size:8pt;">void MyTableViewDelegate::paint(QPainter *a_pPainter
   , const QStyleOptionViewItem &amp;a_Option
   , const QModelIndex &amp;a_Index) const
{
   QVariant value = a_Index.data();
   if (value.isValid() &amp;&amp; !value.isNull())
   {
      // On crée un document pour y écrire du HTML.
      QTextDocument _Document;
      QStyleOptionViewItemV4 _Options = a_Option;

      initStyleOption(&amp;_Options, a_Index);

      // On enregistre le painter pour qu'il ne soit pas
      // modifié à la fin de la méthode.
      a_pPainter-&gt;save();

      QString _Text = _Options.text;

      // Pour voir la sélection, on met le texte en gras
      // si l'item est sélectionné et que la vue a le focus.
      if((a_Option.state &amp; QStyle::State_Selected)
        &amp;&amp; (a_Option.state &amp; QStyle::State_HasFocus))
      {
         _Text = "&lt;div style='color:"
            + a_Option.palette.highlightedText().color().name()
            + "; font-weight: bold;'&gt;" + _Text + "&lt;/div&gt;";
      }

      // On prends la peine de dessiner un document
      // seulement s'il y a du HTML.
      bool _MightBeRichText;
      if(_MightBeRichText = Qt::mightBeRichText(_Text))
         _Options.text = "";

      // S'il y a du HTML, on dessine un controle vide.
      // Sinon on garde le texte et on laisse tomber le document.

      _Options.widget-&gt;style()-&gt;drawControl(QStyle::CE_ItemViewItem
      , &amp;_Options, a_pPainter, _Options.widget);

      if(_MightBeRichText)
      {
         // On met le HTML dans le document (pas setText)
         _Document.setHtml(_Text);

         // On centre le document dans le contrôle.
         QPoint _Point = a_Option.rect.center();

	// On bouge le texte s'il y a une icône.
         QSize _IconSize = _Options.icon.actualSize(_Options.rect.size());
         _Point.setX(a_Option.rect.left()
          + _IconSize.width()
          + (_IconSize.width() &gt; 1 ? 4 : 0));
         // avec une petite marge (4px) pour avoir
         // la même apparence que si on dessine
         // le contrôle normalement.

         int _TextHeight = _Document.size().height();
         // On centre le texte verticalement.
         _Point.setY(_Point.y() -  (_TextHeight&gt;&gt;1));
         a_pPainter-&gt;translate(_Point);      

         // Finalement on dessine le texte HTML.
         _Document.drawContents(a_pPainter);
      }

      // Et on remet le painter comme il était au départ de la méthode.
      a_pPainter-&gt;restore();
   }
}
</pre>
</blockquote>
<p>Voilà !</p>
<p>Ça fonctionne bien pour moi, si vous avez des commentaires, n&#8217;hésitez pas.</p>
]]></content:encoded>
			<wfw:commentRss>http://comment-apprendre.com/qt-cpp/du-html-dans-un-qtableview/blog-qt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveau blog sur Qt c++</title>
		<link>http://comment-apprendre.com/qt-cpp/bienvenue/blog-qt</link>
		<comments>http://comment-apprendre.com/qt-cpp/bienvenue/blog-qt#comments</comments>
		<pubDate>Mon, 01 Aug 2011 01:52:53 +0000</pubDate>
		<dc:creator>qt-programmer</dc:creator>
				<category><![CDATA[Blog Qt]]></category>

		<guid isPermaLink="false">http://comment-apprendre.com/qt-cpp/?p=1</guid>
		<description><![CDATA[J&#8217;ai découvert Qt il y a quelques années, et à chaque fois que je l&#8217;utilise, sa facilité d&#8217;utilisation m&#8217;impressionne. À chaque fois que j&#8217;utilise un autre framework, je m&#8217;ennuie de Qt. C&#8217;est pourquoi j&#8217;ai décidé de créer ce blog pour y inclure les parties qui m&#8217;ont donné du mal. Parce que, oui, le cadre d&#8217;applications<a href="http://comment-apprendre.com/qt-cpp/bienvenue/blog-qt">&#160;&#160;[ Lire plus ]</a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcomment-apprendre.com%2Fqt-cpp%2Fbienvenue%2Fblog-qt"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcomment-apprendre.com%2Fqt-cpp%2Fbienvenue%2Fblog-qt&amp;source=MartinGamsby&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>J&#8217;ai découvert Qt il y a quelques années, et à chaque fois que je l&#8217;utilise, sa facilité d&#8217;utilisation m&#8217;impressionne. À chaque fois que j&#8217;utilise un autre framework, je m&#8217;ennuie de Qt.</p>
<p>C&#8217;est pourquoi j&#8217;ai décidé de créer ce blog pour y inclure les parties qui m&#8217;ont donné du mal. Parce que, oui, le cadre d&#8217;applications Qt n&#8217;est pas infaillible, et parfois il peut être &#8220;stupide&#8221;, mais je pense que ça ne vaut pas la peine de buter sur ce genre de choses.</p>
<p>De plus, j&#8217;aimerais montrer à de nouveaux utilisateurs ce que Qt est capable de faire, parce que quand j&#8217;ai commencé, j&#8217;étais loin de me douter de tout ce que je pouvais faire avec.</p>
<p>Ceci étant dit, si jamais vous butez sur un problème en Qt, faites-le moi savoir dans les commentaires. Qui sait, peut-être que je vais en faire un prochain post ? <img src='http://comment-apprendre.com/qt-cpp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://comment-apprendre.com/qt-cpp/bienvenue/blog-qt/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
