<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://doc.qtfr.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Documentation Qtfr - class_QMenu</title>
  <link>http://doc.qtfr.org/</link>
  <description>La documentation francophone sur Qt</description>
  <language>fr</language>
  <pubDate>Thu, 06 Nov 2008 23:03:54 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Initiation à Qt Jambi</title>
    <link>http://doc.qtfr.org/post/2007/11/25/Initiation-a-Qt-Jambi</link>
    <guid isPermaLink="false">urn:md5:0dad52d26de82a5be8779ddfee0a0136</guid>
    <pubDate>Sun, 25 Nov 2007 22:05:00 +0100</pubDate>
    <dc:creator>Visiteur</dc:creator>
        <category>Tutoriels</category>
        <category>class_QDialog</category><category>class_QMenu</category><category>class_QWidget</category><category>installation</category><category>signaux-slots</category><category>version_Jambi</category>    
    <description>&lt;p&gt;Ce tutoriel vous permettra de découvrir le fonctionnement de Qt Jambi progressivement.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Version&lt;/strong&gt;&amp;nbsp;: Jambi &lt;br /&gt;
&lt;strong&gt;Auteur&lt;/strong&gt;&amp;nbsp;: &lt;a href=&quot;http://forum.qtfr.org/profile.php?id=2374&quot;&gt;Natim&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;    &lt;p&gt;Ce tutoriel est disponible sur le site du zéro: &lt;a href=&quot;http://www.siteduzero.com/tuto-3-5556-0-du-qt-en-java-avec-qt-jambi.html&quot;&gt;y accéder&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;L'utilisateur découvrira:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comment installer Jambi&lt;/li&gt;
&lt;li&gt;Comment créer une fenêtre de base en utilisant des layouts&lt;/li&gt;
&lt;li&gt;Le fonctionnement des signaux et slots de Qt&lt;/li&gt;
&lt;li&gt;et pour finir, réalisera un petit éditeur de texte et un visualisateur d'images.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://doc.qtfr.org/post/2007/11/25/Initiation-a-Qt-Jambi#comment-form</comments>
      <wfw:comment>http://doc.qtfr.org/post/2007/11/25/Initiation-a-Qt-Jambi#comment-form</wfw:comment>
      <wfw:commentRss>http://doc.qtfr.org/feed/rss2/comments/162</wfw:commentRss>
      </item>
    
  <item>
    <title>Ouverture d'une boîte de dialogue à partir de la fenêtre principale</title>
    <link>http://doc.qtfr.org/post/2007/04/10/Ouverture-dune-fenetre-a-partir-de-la-fenetre-principale</link>
    <guid isPermaLink="false">urn:md5:a00ab0041f9ff6004a286a94edc362e4</guid>
    <pubDate>Sun, 15 Apr 2007 18:24:00 +0200</pubDate>
    <dc:creator>IrmatDen</dc:creator>
        <category>Tutoriels</category>
        <category>class_QAction</category><category>class_QDialog</category><category>class_QMenu</category><category>class_QMessageBox</category><category>signaux-slots</category><category>version_Qt4</category>    
    <description>&lt;p&gt;Ce tutoriel est destiné aux nouveaux venus à Qt qui cherche à savoir comment ouvrir une fenêtre à partir de leur fenêtre principale. Nous verrons 2 façons de faire:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilisation d'une fenêtre principale avec menus pour ouvrir une boîte de dialogue et une boite &quot;A propos...&quot;&lt;/li&gt;
&lt;li&gt;ouverture d'une fenêtre de dialogue par le biais d'un bouton&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'en profiterais pour aborder très brièvement 2 autres points&amp;nbsp;: l'utilisation de &lt;code&gt;QAction&lt;/code&gt; et les 2 modes d'affichage des boîtes de dialogue.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Version&lt;/strong&gt;&amp;nbsp;: Qt4 (et une version pyQt disponible)&lt;br /&gt;
&lt;strong&gt;Auteur&lt;/strong&gt;&amp;nbsp;: Denys Bulant (&lt;a href=&quot;http://forum.qtfr.org/profile.php?id=291&quot;&gt;IrmatDen&lt;/a&gt;), &lt;a href=&quot;http://doc.qtfr.org/post/2007/04/10/[http://forum.qtfr.org/profile.php?id=2344&quot;&gt;alteo_gange&lt;/a&gt; pour la version pyQt&lt;br /&gt;
&lt;strong&gt;Fil de discussion&lt;/strong&gt;&amp;nbsp;: &lt;a href=&quot;http://forum.qtfr.org/viewtopic.php?pid=31512&quot;&gt;Forum&lt;/a&gt;&lt;/p&gt;    &lt;h2&gt;Pré requis:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;une installation de Qt4 fonctionnelle&lt;/li&gt;
&lt;li&gt;une connaissance minimale du principe des signaux/slots avec Qt&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Une introduction aux boîtes de dialogue&lt;/h2&gt;


&lt;p&gt;Les boîtes de dialogue sont des composants essentiel à la très grosse majorité des applications. Qu'il s'agisse de boîte de configuration ou de fournir une interactivité à un niveau plus ou moins bas avec le document ouvert (par exemple, la recherche dans un traitement de texte ou un tableur), vous aurez souvent l'occasion d'en utiliser.&lt;/p&gt;


&lt;p&gt;On distingue 2 types d'utilisation des boîtes de dialogue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;non modale: l'utilisateur peut continuer d'interagir avec le reste de l'application&lt;/li&gt;
&lt;li&gt;modale: l'utilisateur est obligé de fermer la boîte de dialogue affichée avant de pouvoir à nouveau se servir de l'application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chaque usage à son but; par exemple, une boîte de dialogue permettant une recherche dans un document aura tout intérêt à être non modale par souci d'ergonomie. Par contre, une fenêtre de configuration devrait plutôt être modale, dûe à une éventuelle dépendance du résultat sur le comportement de l'application.&lt;/p&gt;


&lt;h2&gt;A propos de ce tuto&lt;/h2&gt;


&lt;p&gt;Ce tuto vous permettra, je l'espère de vous familiariser avec &lt;code&gt;QDialog&lt;/code&gt; principalement, et plus globalement l'ouverture de fenêtre à partir d'une autre. Je fourni ici 2 approches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la première est l'ouverture d'une fenêtre en appuyant sur un bouton: elle est la méthode la plus simple, mais pas forcèment la plus commune&lt;/li&gt;
&lt;li&gt;la seconde fait utilisation d'un menu, et vous montre comment afficher une boîte de type &quot;A propos...&quot;. Il y est fait appel à 2 concepts supplémentaires: les menus et les actions. Le code est loin d'être compliqué, mais assurez-vous d'avoir compris la première partie pour lire la seconde.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comme dit dans l'introduction, une version pyQt a été réalisée par &lt;a href=&quot;http://doc.qtfr.org/post/2007/04/10/[http://forum.qtfr.org/profile.php?id=2344&quot;&gt;alteo_gange&lt;/a&gt;. Elle est disponible sur le &lt;a href=&quot;http://forum.qtfr.org/viewtopic.php?pid=32334#p32334&quot;&gt;forum&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;Partie 0: Lectrice/Lecteur, voici &lt;a href=&quot;http://doc.trolltech.com/4.2/qdialog.html&quot; hreflang=&quot;en&quot;&gt;QDialog&lt;/a&gt;; QDialog, voici ton futur maître ;-)&lt;/h2&gt;


&lt;p&gt;Avant de sauter dans le vif du sujet, faisons plus ample connaissance avec la classe &lt;code&gt;QDialog&lt;/code&gt;. Vous vous en doutez probablement, elle réalise ce qu'une boîte de dialogue est sensée faire, et permet quelques raccourcis que vous n'auriez pas si vous dériviez d'un &lt;code&gt;QWidget&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Cette section sert de très brève introduction aux fonctions les plus basiques de &lt;code&gt;QDialog&lt;/code&gt;. Je vous invite à aller lire la &lt;a href=&quot;http://doc.trolltech.com/4.2/qdialog.html#details&quot; hreflang=&quot;en&quot;&gt;description&lt;/a&gt; détaillée sur la page de documentation de Trolltech. Ils en parlent bien mieux que moi.&lt;/p&gt;


&lt;h3&gt;De la modalité et différences entre les fonctions d'affichage&lt;/h3&gt;


&lt;p&gt;Afficher une instance de &lt;code&gt;QDialog&lt;/code&gt; peut se faire de plusieurs façons. En voici un aperçu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;QDialog::show()&lt;/code&gt;: QDialog::show(): utilisé pour un affichage de la boîte de dialogue; par défaut l'affichage est non modal; peut servir à afficher un &lt;code&gt;QDialog&lt;/code&gt; de façon modale si &lt;code&gt;setModal(true)&lt;/code&gt; à été appellé précédemment.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QDialog::hide()&lt;/code&gt;: permet de cacher une boite de dialogue&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QWidget::setVisible()&lt;/code&gt; et &lt;code&gt;QWidget::isVisible()&lt;/code&gt;: &lt;code&gt;QDialog&lt;/code&gt; dérive de &lt;code&gt;QWidget&lt;/code&gt;, et fournit donc cette alternative à &lt;code&gt;show()/hide()&lt;/code&gt;. L'utilité de ces fonctions se trouve principalement dans la possibilité de changer la visibilité d'une fenêtre en une ligne de code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QDialog::exec()&lt;/code&gt;: sert à afficher une boite de dialogue modale et éventuellement récupérer le code de retour&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Valeurs de retours&lt;/h3&gt;


&lt;p&gt;Il peut être parfois utile de savoir si l'interaction demandée à l'utilisateur par le biais de votre boîte de dialogue à réussi ou échoué (dans le cas d'une boîte modale).
&lt;code&gt;QDialog::exec()&lt;/code&gt; renvoit un code d'erreur qui est soit &lt;code&gt;QDialog::Accepted&lt;/code&gt;, soit &lt;code&gt;QDialog::Rejected&lt;/code&gt; (ou encore une de vos valeurs propres dans des cas peu courants). La première valeur signifie un succès, tandis que la seconde indique soit un échec, soit un refus ou une annulation.
Du côté de votre boîte de dialogue, vous pouvez renvoyer ces valeurs de diverses façons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;QDialog::accept()&lt;/code&gt;: &lt;code&gt;QDialog::Accepted&lt;/code&gt; sera la valeur renvoyée par &lt;code&gt;exec()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QDialog::reject()&lt;/code&gt;: &lt;code&gt;QDialog::Rejected&lt;/code&gt; sera renvoyée&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QDialog::done(int)&lt;/code&gt;: vous permet de spécifier l'une des 2 valeurs, mais aussi de spécifier la votre si vous en avez un réél besoin (utilisation assez rare tout de même).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Une boîte de dialogue...&lt;/h3&gt;


&lt;p&gt;La classe définie ici sera celle que nous allons afficher dans les 2 exemples suivant. Elle n'est composée que d'un bouton &quot;Fermer&quot;.&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;class&lt;/span&gt; Dialog : &lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; QDialog
&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt;:
	Dialog&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;QWidget *parent=&lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	:QDialog&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Elle est simplement composé d'un bouton &amp;quot;Fermer&amp;quot;&lt;/span&gt;
		QPushButton *closeBtn = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; QPushButton&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Fermer&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// lequel ferme la fenetre lorsqu'on clic dessus&lt;/span&gt;
		connect&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;closeBtn, &lt;span style=&quot;color: #0000ff;&quot;&gt;SIGNAL&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;clicked&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, SLOT&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;accept&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;


&lt;h2&gt;Partie 1: ouverture de fenêtre avec des boutons&lt;/h2&gt;

&lt;h3&gt;Classes abordées:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://doc.trolltech.com/4.2/qdialog.html&quot; hreflang=&quot;en&quot;&gt;QDialog&lt;/a&gt;: sert de classe de base aux boîtes de dialogue&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://doc.trolltech.com/4.2/qpushbutton.html&quot; hreflang=&quot;en&quot;&gt;QPushButton&lt;/a&gt;: déclenche l'affichage des boites de dialogue, et quitte l'application&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Description de la solution&lt;/h3&gt;


&lt;p&gt;Bien que rarement utilisée/utilisable à cause du &quot;clicodrome&quot; qui risque d'être engendré (affichage d'une boîte de dialogue qui en appelle une autre qui... :)), cette méthode permet d'illustrer simplement l'ouverture d'une boîte de dialogue. Ceci dit, il peut toujours y avoir besoin d'une telle utilisation, ne serait-ce que parce que votre widget principal ne possède pas de menu.&lt;/p&gt;


&lt;h3&gt;Exemple&lt;/h3&gt;


&lt;p&gt;Voici la classe principale. C'est à partir de celle-ci que nous allons demander l'ouverture d'une instance de &lt;code&gt;Dialog&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;class&lt;/span&gt; MainDialog : &lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; QDialog
&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
	Q_OBJECT
&amp;nbsp;
&lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt;:
	MainDialog&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;QWidget *parent=&lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	:QDialog&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, dlg&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		dlg = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; Dialog&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Ce bouton nous permettra d'afficher notre boîte de dialogue&lt;/span&gt;
		QPushButton *modalDlgBtn = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; QPushButton&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot; Open Modal dialog&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// J'agrandis la fenetre pour que dlg soit visuellement différenciable de celle-ci&lt;/span&gt;
		resize&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;250&lt;/span&gt;,&lt;span style=&quot;color: #0000dd;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// On demande à Qt d'executer showDialogModal() lorsque le bouton est clique&lt;/span&gt;
		connect&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;modalDlgBtn, &lt;span style=&quot;color: #0000ff;&quot;&gt;SIGNAL&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;clicked&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, SLOT&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;showDialogModal&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #0000ff;&quot;&gt;private&lt;/span&gt; slots:
	&lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; showDialogModal&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// on affiche la boite de dialogue de facon modale&lt;/span&gt;
		dlg-&amp;gt;setModal&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		dlg-&amp;gt;show&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #0000ff;&quot;&gt;private&lt;/span&gt;:
	Dialog *dlg;
&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;


&lt;h2&gt;Partie 2: utilisation d'une fenêtre principale avec menus pour ouvrir une boîte de dialogue et une boite &quot;A propos...&quot;&lt;/h2&gt;

&lt;h3&gt;Classes abordées:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://doc.trolltech.com/4.2/qmainwindow.html&quot; hreflang=&quot;en&quot;&gt;QMainWindow&lt;/a&gt;: nous en dériverons pour créer une fenêtre principale avec barre de menu&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://doc.trolltech.com/4.2/qdialog.html&quot; hreflang=&quot;en&quot;&gt;QDialog&lt;/a&gt;: sert de classe de base à notre boîte de dialogue&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://doc.trolltech.com/4.2/qmessagebox.html&quot; hreflang=&quot;en&quot;&gt;QMessageBox&lt;/a&gt;: affichage d'un message &quot;A propos...&quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://doc.trolltech.com/4.2/qaction.html&quot; hreflang=&quot;en&quot;&gt;QAction&lt;/a&gt;: permet de centraliser et coordonner le comportement et l'apparence entre des choix de menus ou des boutons sur une barre d'outils (chose que nous ne verrons pas ici)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Description de la solution&lt;/h3&gt;


&lt;p&gt;Nous allons utiliser ici un menu pour permettre d'ouvrir une boîte de dialogue de façon modale, non modale, et enfin une descrption de ce petit code. La classe &lt;code&gt;QAction&lt;/code&gt; permet d'ajouter des fonctionnalités à un menu, ainsi qu'à d'éventuelles barre d'outils.&lt;/p&gt;


&lt;h3&gt;Exemple&lt;/h3&gt;


&lt;p&gt;C'est à partir de l'interface décrite ci-dessous que nous allons demander l'ouverture d'une instance de &lt;code&gt;Dialog&lt;/code&gt;, que ce soit de façon modale ou non.&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;class&lt;/span&gt; MainWindow : &lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; QMainWindow
&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
Q_OBJECT
&amp;nbsp;
&lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt;:
	MainWindow&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;QWidget *parent=&lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	:QMainWindow&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, dlg&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Nous creons l'instance de dialogue que nous voulons afficher&lt;/span&gt;
		dlg = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; Dialog&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Les actions correspondront aux items de menus&lt;/span&gt;
		QAction *modelessAct = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; QAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Dialogue non modale&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		QAction *modalAct = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; QAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Afficher dialogue modale&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		QAction *aboutAct = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; QAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;A propos...&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		QAction *closeAct = &lt;span style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; QAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Quitter&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Nous créons le menu proprement dit. Nous y ajoutons les actions précédemment crées&lt;/span&gt;
		QMenu *menu = menuBar&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;-&amp;gt;addMenu&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Divers...&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		menu-&amp;gt;addAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;modelessAct&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		menu-&amp;gt;addAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;modalAct&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		menu-&amp;gt;addAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;aboutAct&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		menu-&amp;gt;addAction&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;closeAct&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Définition des comportements des actions&lt;/span&gt;
		connect&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;modelessAct, &lt;span style=&quot;color: #0000ff;&quot;&gt;SIGNAL&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;triggered&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, SLOT&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;swapShowDialogModeless&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		connect&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;modalAct, &lt;span style=&quot;color: #0000ff;&quot;&gt;SIGNAL&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;triggered&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, SLOT&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;showDialogModal&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		connect&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;aboutAct, &lt;span style=&quot;color: #0000ff;&quot;&gt;SIGNAL&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;triggered&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, SLOT&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;about&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		connect&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;closeAct, &lt;span style=&quot;color: #0000ff;&quot;&gt;SIGNAL&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;triggered&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;, qApp, SLOT&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;quit&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #0000ff;&quot;&gt;private&lt;/span&gt; slots:
	&lt;span style=&quot;color: #ff0000;&quot;&gt;// Affichée de façon modeless, l'utilisateur peut continuer d'interagir avec le reste de l'application&lt;/span&gt;
	&lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; swapShowDialogModeless&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// Si elle est deja affichee, on cache la boite de dialogue sinon on l'affiche&lt;/span&gt;
		dlg-&amp;gt;setVisible&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;!dlg-&amp;gt;isVisible&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #ff0000;&quot;&gt;// En version modale, une boite de dialogue empêche l'utilisateur d'intervenir sur une autre partie&lt;/span&gt;
	&lt;span style=&quot;color: #ff0000;&quot;&gt;// de l'interface que la boite de dialogue&lt;/span&gt;
	&lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; showDialogModal&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span style=&quot;color: #ff0000;&quot;&gt;// On s'assure que notre boite de dialogue n'est pas déjà affichée de façon non modale&lt;/span&gt;
		&lt;span style=&quot;color: #0000ff;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;dlg-&amp;gt;isVisible&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
			QMessageBox::&lt;span style=&quot;color: #00eeff;&quot;&gt;critical&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, &lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Erreur&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;La boite de dialogue est déjà ouverte. Veuillez la fermer pour l'ouvrir à nouveau.&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span style=&quot;color: #0000ff;&quot;&gt;else&lt;/span&gt;
		&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
			dlg-&amp;gt;exec&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #ff0000;&quot;&gt;// Affichage d'information à propos de ce &amp;quot;logiciel&amp;quot;&lt;/span&gt;
	&lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; about&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#123;&lt;/span&gt;
		QMessageBox::&lt;span style=&quot;color: #00eeff;&quot;&gt;about&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;this&lt;/span&gt;, &lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Tuto: Menus et dialogues&amp;quot;&lt;/span&gt;,
			&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Cette application est destinée à illustrer:&lt;span style=&quot;color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; \
			&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;&amp;gt; l'ouverture de boîte de dialogue&lt;span style=&quot;color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; \
			&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;&amp;gt; l'ouverture d'une fenetre &lt;span style=&quot;color: #666666; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt;A propos...&lt;span style=&quot;color: #666666; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; \
			&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;&amp;gt; et une rapide introduction à QAction&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #0000ff;&quot;&gt;private&lt;/span&gt;:
	Dialog *dlg;
&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;


&lt;h2&gt;Archive&lt;/h2&gt;


&lt;p&gt;Vous trouverez attaché à cette article une archive composée de 2 sous répertoires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bouton: exemple de la première partie&lt;/li&gt;
&lt;li&gt;menu: exemple de la seconde&lt;/li&gt;
&lt;/ul&gt;</description>
    
          <enclosure url="http://doc.qtfr.org/public/2007/dialog_from_window.zip"
      length="3117" type="application/zip" />
    
    
          <comments>http://doc.qtfr.org/post/2007/04/10/Ouverture-dune-fenetre-a-partir-de-la-fenetre-principale#comment-form</comments>
      <wfw:comment>http://doc.qtfr.org/post/2007/04/10/Ouverture-dune-fenetre-a-partir-de-la-fenetre-principale#comment-form</wfw:comment>
      <wfw:commentRss>http://doc.qtfr.org/feed/rss2/comments/111</wfw:commentRss>
      </item>
    
</channel>
</rss>