La vue graphique : Graphics ViewLa vue graphique (Graphics View) fournit une surface permettant de g�rer et d'interagir avec un grand nombre d'�l�ments graphiques 2D personnalis�s, ainsi qu'un widget d'affichage (int�grant zoom et rotation), pour visualiser ces �l�ments. Le framework inclut une architecture de propagation d'�v�nements qui autorise des interactions pr�cises (calculs en double pr�cision) avec les �l�ments de la sc�ne. Les �l�ments peuvent traiter les �v�nements clavier, souris (clics, mouvements) et peuvent suivre les mouvements de la souris. Graphics View utilise un arbre BSP (Binary Space Partitioning) pour trouver tr�s rapidement les �l�ments et, en cons�quence, peut afficher de tr�s grandes sc�nes en temps r�el, m�me avec des millions d'�l�ments. Graphics View a �t� introduite avec Qt 4.2, rempla�ant son pr�d�cesseur, QCanvas. Si vous effectuez un portage depuis QCanvas, voir Porting to Graphics View. L'architecture de Graphics ViewGraphics View fournit une approche bas�e sur les �l�ments de la programmation mod�le-vue, similaire � ce que font les classes QTableView, QTreeView et QListView dans InterView. Plusieurs vues peuvent observer la m�me sc�ne et la sc�ne contient des �l�ments de formes g�om�triques vari�es. La sc�neQGraphicsScene est la sc�ne de la vue graphique. La sc�ne a les responsabilit�s suivantes :
La sc�ne est un contenant pour les �l�ments de type QGraphicsItem. Ces �l�ments sont ajout�s � la sc�ne par l'appel de QGraphicsScene::addItem() et ensuite retrouv�s par une des nombreuses fonctions de recherche d'�l�ments. QGraphicsScene::items() et ses surcharges renvoient tous les �l�ments contenus par (ou ayant une intersection avec) un point, un rectangle, un polygone ou un chemin vectoriel quelconque. QGraphicsScene::itemAt() renvoie l'�l�ment du dessus en un point particulier. Toutes les fonctions de recherche d'�l�ments renvoient les �l�ments dans l'ordre d'empilement descendant (c'est-�-dire que le premier renvoy� est au-dessus, le dernier en dessous). QGraphicsScene scene; QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100)); QGraphicsItem *item = scene.itemAt(50, 50); // item == rect L'architecture de propagation d'�v�nements de QGraphicsScene g�re la transmission des �v�nements de la sc�ne aux �l�ments et propage �galement les �v�nements entre �l�ments. Si la sc�ne re�oit un �v�nement de clic de souris � une position donn�e, la sc�ne envoie l'�v�nement � l'objet situ� � cette position. QGraphicsScene g�re aussi certains �tats d'�l�ments comme la s�lection et le focus. Vous pouvez s�lectionner des �l�ments de la sc�ne en appelant QGraphicsScene::setSelectionArea(), en passant une forme arbitraire. Cette fonction est aussi utilis�e pour la s�lection rectangulaire dans QGraphicsView. Pour obtenir la liste de tous les �l�ments actuellement s�lectionn�s, appelez QGraphicsScene::selectedItems(). Un autre �tat trait� par QGraphicsScene est le suivi de l'�l�ment ayant le focus pour l'entr�e au clavier. Vous pouvez donner le focus � un �l�ment par QGraphicsScene::setFocusItem() ou utiliser QGraphicsItem::setFocus() pour conna�tre l'�l�ment ayant le focus par QGraphicsScene::focusItem(). Enfin, QGraphicsScene vous permet un rendu de parties de la sc�ne dans un QPainter par la fonction QGraphicsScene::render(). Vous pourrez en lire davantage sur ce sujet dans la section Impression plus loin dans ce document. La vue graphiqueQGraphicsView est le widget vue, qui affiche le contenu d'une sc�ne. Vous pouvez attacher plusieurs vues � la m�me sc�ne, pour fournir plusieurs affichages du m�me jeu de donn�es. Le widget vue est une zone de d�filement (scroll) et fournit des barres de d�filement pour naviguer dans de grandes sc�nes. Pour activer le support OpenGL, vous pouvez choisir un visualiseur QGLWidget en appelant QGraphicsView::setViewport(). QGraphicsScene scene; myPopulateScene(&scene); QGraphicsView view(&scene); view.show(); La vue re�oit des �v�nements d'entr�e depuis le clavier et la souris et les traduit en �v�nements de la sc�ne (en convertissant les coordonn�es en coordonn�es de la sc�ne si n�cessaire), avant d'envoyer les �v�nements � la sc�ne visualis�e. En utilisant sa matrice de transformation, QGraphicsView::transform(), la vue peut transformer le syst�me de coordonn�es de la sc�ne. Ceci permet des fonctions de navigation avanc�es comme le zoom et la rotation. Par commodit�, QGraphicsView fournit aussi des fonctions pour la conversion entre coordonn�es de la vue et de la sc�ne : QGraphicsView::mapToScene() et QGraphicsView::mapFromScene(). L'�l�ment graphiqueQGraphicsItem est la classe de base pour tous les �l�ments graphiques dans une sc�ne. La vue graphique fournit plusieurs �l�ments standards pour des formes typiques, comme des rectangles (QGraphicsRectItem), ellipses (QGraphicsEllipseItem) et textes mais en cr�ant des QGraphicsItem personnalis�s on acc�de aux fonctions les plus puissantes. Parmi d'autres, QGraphicsItem fournit les fonctions suivantes :
Un QGraphicsItem r�side dans un syst�me de coordonn�es local et, comme QGraphicsView, il fournit des fonctions pour convertir des coordonn�es entre l'�l�ment et la sc�ne et d'�l�ment � �l�ment. Comme QGraphicsView, il peut transformer son syst�me de coordonn�es avec une matrice QGraphicsItem::transform(), ce qui est utile pour des rotations et changements d'�chelle d'�l�ments individuels. Les �l�ments peuvent contenir des �l�ments enfants. Les transformations de l'�l�ment parent sont h�rit�es par les enfants. Cependant, ind�pendamment des transformations successives d'un �l�ment, toutes ses fonctions (comme QGraphicsItem::contains(), QGraphicsItem::boundingRect() ou QGraphicsItem::collidesWith()) op�rent toujours en coordonn�es locales. QGraphicsItem g�re la d�tection de collision en utilisant la fonction QGraphicsItem::shape() et QGraphicsItem::collidesWith(), qui sont toutes deux des fonctions virtuelles. En renvoyant la forme de votre �l�ment sous forme de QPainterPath en coordonn�es locales depuis QGraphicsItem::shape(), QGraphicsItem se chargera pour vous de la d�tection de collision. Si vous voulez g�rer vous-m�me la d�tection de collision, vous pouvez r�impl�menter QGraphicsItem::collidesWith(). Les classes de la vue graphiqueCes classes fournissent un framework pour la cr�ation d'applications interactives.
Le syst�me de coordonn�esGraphics View est bas�e sur le syst�me de coordonn�es cart�sien : la position et la g�om�trie des �l�ments de la sc�ne sont repr�sent�s par des couples de coordonn�es x et y. Lorsqu'on observe une sc�ne dans une vue non transform�e, une unit� de la sc�ne est repr�sent�e par un pixel de l'�cran. Note : le syst�me avec l'axe Y invers� (o� y augmente vers le haut) n'est pas g�r� �tant donn� que les vues graphiques utilisent le syst�me de coordonn�es de Qt. Trois syst�mes de coordonn�es coexistent dans Graphics View : les coordonn�es �l�ment, sc�ne et vue. Pour simplifier votre travail, Graphics View fournit des fonctions utilitaires qui vous permettent diverses conversions entre les trois syst�mes de coordonn�es. Pendant le rendu, les coordonn�es sc�ne correspondent au coordonn�es logiques de QPainter et les coordonn�es vue correspondent aux coordonn�es du dispositif de rendu (appel�es coordonn�es physiques ou device). La description de la relation entre coordonn�es logiques et physiques se trouve dans la documentation du syst�me de coordonn�es. Les �l�ments vivent dans leur propre syst�me de coordonn�es local. L'origine des coordonn�es est g�n�ralement leur point central (0, 0), qui est aussi l'axe des transformations. Les primitives g�om�triques dans le syst�me de coordonn�es local sont souvent appel�es points, lignes ou rectangles de l'�l�ment.� la cr�ation d'un �l�ment personnalis�, vous ne vous pr�occupez que des coordonn�es locales, QGraphicsScene et QGraphicsView effectueront toutes les transformations pour vous. Cela rend l'impl�mentation d'�l�ments personnalis�s tr�s simple. Par exemple, si vous recevez un �v�nement clic ou glissement de souris, la position de l'�v�nement est fournie en coordonn�es locales. La fonction virtuelle QGraphicsItem::contains(), qui renvoie vrai si un point donn� est � l'int�rieur de votre �l�ment et faux sinon, prend un argument point en coordonn�es locales. De la m�me fa�on, le rectangle (ou la forme) fronti�re sont en coordonn�es locales. La position d'un �l�ment correspond aux coordonn�es de son centre dans le syst�me de coordonn�es de son parent ; elle est parfois appel�e coordonn�es parent. Dans ce sens la sc�ne est consid�r�e comme le « parent » de tous les objets sans parent : la position des objets de premier niveau est en coordonn�es de sc�ne. Les coordonn�es des enfants sont relatives � celles de leur parent. Si l'enfant n'est pas transform�, la diff�rence entre ses coordonn�es et celles du parent est la m�me que la distance entre les �l�ments dans les coordonn�es du parent. Par exemple, si un enfant non transform� est positionn� pr�cis�ment au centre de son parent, les syst�mes de coordonn�es des deux �l�ments seront identiques. Par contre, si l'enfant est en position (10, 0), le point (0, 10) de l'enfant correspondra au point (10, 10) du parent. �tant donn� que la position et les transformations d'un �l�ment sont relatives � son parent, les coordonn�es locales de l'enfant ne sont pas affect�es par les transformations du parent, bien que les transformations du parent transforment implicitement l'enfant. Dans l'exemple pr�c�dent, m�me si le parent est agrandi ou tourn�, le point (0,10) de l'enfant correspondra toujours au point (10 ,10) du parent. Cependant, relativement � la sc�ne, l'enfant va suivre les transformations du parent : si le parent est agrandi d'un facteur 2, la position de l'enfant sera (20, 0) en coordonn�es de sc�ne et son point (10, 0) correspondra au point (40, 0) de la sc�ne. Avec QGraphicsItem::pos(), l'une des seules exceptions, les fonctions de QGraphicsItem op�rent en coordonn�es locales, ind�pendamment des transformations de l'�l�ment ou de ses parents. Par exemple, le rectangle fronti�re d'un �l�ment (soit QGraphicsItem::boundingRect()) est toujours donn� en coordonn�es locales de l'�l�ment. Les coordonn�es de sc�neLa sc�ne repr�sente le syst�me de coordonn�es de base pour tous ses �l�ments. Le syst�me de coordonn�es de la sc�ne d�crit la position de tous les �l�ments de premier niveau et forme �galement la base pour tous les �v�nements de sc�ne envoy�s � la sc�ne par la vue. Chaque �l�ment de la sc�ne a une position dans la sc�ne (QGraphicsItem::scenePos(), QGraphicsItem::sceneBoundingRect()), en plus de sa position et sa fronti�re locales. La position de sc�ne d�crit la position d'un �l�ment en coordonn�es de sc�ne et son rectangle fronti�re forme la base � partir de laquelle QGraphicsScene d�termine quelles parties de la sc�ne ont chang�. Les changements de la sc�ne sont communiqu�s par le signal QGraphicsScene::changed(), dont les arguments sont une suite de rectangles dans la sc�ne. Coordonn�es de vueLes coordonn�es de vue sont les coordonn�es du widget, avec comme unit� le pixel. La particularit� de ce syst�me de coordonn�es est qu'il est relatif au widget ou � la zone d'affichage et non affect� par la sc�ne observ�e. Le coin sup�rieur gauche de la zone d'affichage du QGraphicsView est toujours (0, 0) et le coin inf�rieur droit est toujours (largeur de la zone, hauteur de la zone). Tous les �v�nements souris et glisser-d�poser sont originellement re�us en coordonn�es de vue et vous devez les convertir en coordonn�es de sc�ne pour interagir avec les �l�ments de la sc�ne. Conversion de coordonn�esSouvent, lors de la manipulation d'�l�ments d'une sc�ne, il peut �tre utile de convertir des coordonn�es ou des formes arbitraires de la sc�ne vers un �l�ment ou inversement ou entre �l�ments. Par exemple, quand vous cliquez dans la zone d'affichage d'une QGraphicsView, vous pouvez demander � la sc�ne quel �l�ment se trouve sous le curseur en appelant QGraphicsView::mapToScene(), suivi de QGraphicsScene::itemAt(). Si vous voulez savoir o� un �l�ment se trouve dans la zone d'affichage, vous pouvez appeler QGraphicsItem::mapToScene() sur l'�l�ment, puis QGraphicsView::mapFromScene() sur la vue. Autre exemple, si vous voulez savoir quels �l�ments se trouvent dans une ellipse de la vue, vous pouvez passer un QPainterPath � mapToScene() et ensuite passer le chemin converti � QGraphicsScene::items(). Vous pouvez convertir des coordonn�es et des formes vers et depuis la sc�ne d'un �l�ment en appelant QGraphicsItem::mapToScene() et QGraphicsItem::mapFromScene(). Vous pouvez aussi convertir vers/depuis le parent en appelant QGraphicsItem::mapToParent() et QGraphicsItem::mapFromParent() ou entre �l�ments en appelant QGraphicsItem::mapToItem() et QGraphicsItem::mapFromItem(). Toutes les fonctions de conversion peuvent convertir points, rectangles, polygones et chemins. Les m�mes fonctions de conversion sont disponibles dans la vue, pour convertir vers/depuis la sc�ne. Il s'agit de QGraphicsView::mapFromScene() et QGraphicsView::mapToScene(). Pour convertir depuis une vue vers un �l�ment, vous devez convertir vers la sc�ne, puis de la sc�ne vers l'�l�ment. Fonctions principalesZoom et rotationQGraphicsView permet les m�mes transformations affines que QPainter � travers QGraphicsView::setMatrix(). En appliquant une transformation � une vue, vous pouvez facilement ajouter des fonctions de navigation courantes comme le zoom et la rotation. Voici un exemple d'impl�mentation de slots de zoom et de rotation dans une sous-classe de QGraphicsView : class View : public QGraphicsView { Q_OBJECT ... public slots: void zoomIn() { scale(1.2, 1.2); } void zoomOut() { scale(1 / 1.2, 1 / 1.2); } void rotateLeft() { rotate(-10); } void rotateRight() { rotate(10); } ... }; Les slots pourraient �tre connect�s � des QToolButtons avec autoRepeat activ�. QGraphicsView conserve la position du centre de la vue quand vous la transformez. Voir aussi les exemples Elastic Nodes pour du code montrant l'impl�mentation de fonctions de zoom. ImpressionLa vue graphique permet d'imprimer avec une seule ligne de code � travers ses fonctions de rendu, QGraphicsScene::render() et QGraphicsView::render(). Les fonctions fournissent la m�me API : la sc�ne ou la vue peuvent rendre tout ou partie de leur contenu sur n'importe quelle surface de dessin en passant un QPainter � l'une des fonctions de rendu. Cet exemple montre comment imprimer la sc�ne enti�re dans une pleine page, utilisant QPrinter. QGraphicsScene scene; scene.addRect(QRectF(0, 0, 100, 200), QPen(Qt::black), QBrush(Qt::green)); QPrinter printer; if (QPrintDialog(&printer).exec() == QDialog::Accepted) { QPainter painter(&printer); painter.setRenderHint(QPainter::Antialiasing); scene.render(&painter); } La diff�rence entre les fonctions de rendu de sc�ne et de vue est que l'une op�re en coordonn�es de sc�ne, l'autre en coordonn�es de vue. QGraphicsScene::render() est souvent pr�f�r�e pour imprimer des segments entiers non transform�s, comme pour le trac� de donn�es g�om�triques, ou pour imprimer un document texte. QGraphicsView::render(), de son c�t�, est adapt� pour la copie d'�cran ; son comportement par d�faut est de rendre le contenu exact de la zone d'affichage en utilisant le QPainter fourni. QGraphicsScene scene; scene.addRect(QRectF(0, 0, 100, 200), QPen(Qt::black), QBrush(Qt::green)); QPixmap pixmap; QPainter painter(&pixmap); painter.setRenderHint(QPainter::Antialiasing); scene.render(&painter); painter.end(); pixmap.save("scene.png"); Lorsque les tailles des zones source et destination ne correspondent pas, le contenu de la source est �tir� pour remplir la zone destination. En passant un Qt::AspectRatioMode � la fonction de rendu que vous utilisez, vous pouvez choisir de conserver ou d'ignorer les proportions de la sc�ne quand le contenu est �tir�. Glisser-d�poserComme QGraphicsView d�rive indirectement de QWidget, elle fournit d�j� les m�mes fonctions de glisser-d�poser que QWidget. De plus, par commodit�, le framework Graphics View fournit une gestion de glisser-d�poser pour la sc�ne et pour chacun de ses �l�ments. Quand la vue re�oit un d�but de glissement, elle traduit les �v�nements de glisser-d�poser en QGraphicsSceneDragDropEvent, qui sont transmis � la sc�ne. La sc�ne prend le relai de la gestion de cet �v�nement et l'envoie au premier �l�ment sous le curseur acceptant les d�poses. Pour commencer le glissement d'un �l�ment, cr�ez un objet QDrag en lui passant un pointeur sur le widget � glisser. Les �l�ments peuvent �tre observ�s par plusieurs vues simultan�ment mais une seule peut initier le glissement. Les glissements sont en g�n�ral initi�s par un clic ou un mouvement de souris et, dans ce cas, vous pouvez obtenir le widget source dans mousePressEvent() ou mouseMoveEvent(). Par exemple : void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { QMimeData *data = new QMimeData; data->setColor(Qt::green); QDrag *drag = new QDrag(event->widget()); drag->setMimeData(data); drag->start(); } Pour intercepter les �v�nements de glisser-d�poser pour une sc�ne, r�impl�mentez QGraphicsScene::dragEnterEvent() et les gestionnaires d'�v�nements dont votre sc�ne a besoin dans une sous-classe de QGraphicsItem. Vous pourrez en lire davantage sur les glisser-d�poser dans la documentation de chaque gestionnaire d'�v�nements de QGraphicsScene. Les �l�ments peuvent aussi activer la gestion du glisser-d�poser en appelant QGraphicsItem::setAcceptDrops(). Pour traiter les demandes de glissement, r�impl�mentez QGraphicsItem::dragEnterEvent(), QGraphicsItem::dragMoveEvent(), QGraphicsItem::dragLeaveEvent() et QGraphicsItem::dropEvent(). Voir aussi l'exemple Drag and Drop Robot pour une d�monstration des op�rations de glisser-d�poser. Pointeurs de souris et infobullesComme QWidget, QGraphicsItem g�re les pointeurs de souris (QGraphicsItem::setCursor()) et les infobulles (QGraphicsItem::setToolTip()). Pointeurs et infobulles sont activ�s par QGraphicsView quand le pointeur de la souris entre dans le p�rim�tre de l'�l�ment (d�tect� par QGraphicsItem::contains()). Vous pouvez aussi d�finir un pointeur par d�faut pour la vue en appelant QGraphicsView::setCursor(). Voir aussi Drag and Drop Robot pour un exemple de code impl�mentant infobulles et gestion de forme de pointeur. AnimationsLa vue graphique g�re les animations � diff�rents niveaux. Vous pouvez facilement assembler des animations en utilisant le framework Animation. Pour cela vos �l�ments doivent h�riter de QGraphicsObject et s'associer avec QPropertyAnimation. QPropertyAnimation permet d'animer toutes les propri�t�s d'un QObject. Une autre option est de cr�er un objet personnalis� h�ritant de QObject et QGraphicsItem. L'objet peut alors cr�er ses propres timers et contr�ler des animations avec des �tapes incr�mentales dans QObject::timerEvent(). Une troisi�me option, principalement disponible pour la compatibilit� avec QCanvas de Qt 3, est d?avancer la sc�ne en appelant QGraphicsScene::advance(), qui, � son tour, appelle QGraphicsItem::advance(). Rendu OpenGLPour activer le rendu OpenGL, d�finissez simplement un QGLWidget comme afficheur de QGraphicsView en appelant QGraphicsView::setViewport(). Si vous voulez un OpenGL avec antialiasing, il vous faut activer la gestion multi-�chantillons d'OpenGL (voir QGLFormat::sampleBuffers()). Exemple : QGraphicsView view(&scene); view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); Groupes d'�l�mentsEn rendant un �l�ment l'enfant d'un autre �l�ment, vous pouvez obtenir la fonction essentielle du groupement d'�l�ments : les �l�ments vont se d�placer ensemble et toutes les transformations sont propag�es de parent � enfant. De plus, QGraphicsItemGroup est un �l�ment sp�cial qui combine la gestion d'�v�nements des enfants avec une interface utile pour ajouter des �l�ments � un groupe ou en retirer. L'ajout d'un �l�ment � un QGraphicsItemGroup conserve la position et les transformations de l'�l�ment, alors que le changement de parent provoque en g�n�ral un repositionnement de l'enfant relativement � son nouveau parent. Il est commode de cr�er des QGraphicsItemGroup � partir de la sc�ne en appelant QGraphicsScene::createItemGroup(). Widgets et LayoutsQt 4.4 a introduit la gestion de la g�om�trie et de la disposition (layout) des �l�ments avec QGraphicsWidget. Cet �l�ment de base sp�cial est similaire � QWidget mais, contrairement � QWidget, il ne d�rive pas de QPaintDevice mais de QGraphicsItem. Ceci permet d'�crire des widgets complets, avec �v�nements, signaux et slots, indications de taille et permet �galement de g�rer la g�om�trie de vos widgets dans des layouts � travers QGraphicsLinearLayout et QGraphicsGridLayout. QGraphicsWidget Profitant des capacit�s et de la faible consommation en ressources de QGraphicsItem, QGraphicsWidget fournit le meilleur des deux mondes : des fonctions suppl�mentaires de QWidget, comme le style, la police, la palette, le layout et la g�om�trie ainsi que la gestion des transformations de QGraphicsItem. Comme la vue graphique utilise des coordonn�es flottantes au lieu d'entiers, les fonctions g�om�triques de QGraphicsWidget op�rent �galement sur QRectF et QPointF. Ceci s'applique aussi aux bordures, marges et espacements. Avec QGraphicsWidget, il n'est pas rare de sp�cifier des marges de (0.5, 0.5, 0.5, 0.5), par exemple. Vous pouvez cr�er � la fois des sous-widgets et des fen�tres de premier niveau ; dans certains cas, vous pouvez utiliser la vue graphique pour des applications multi-documents (MDI) avanc�es. Certaines propri�t�s de QWidget sont g�r�es, dont les drapeaux et attributs de fen�tre, mais pas toutes. R�f�rez-vous � la documentation de la classe QGraphicsWidget pour une vue d'ensemble de ce qui est ou n'est pas g�r�. Par exemple, vous pouvez cr�er des fen�tres d�cor�es en passant le drapeau de fen�tre Qt::Window au constructeur de QGraphicsWidget mais la vue graphique ne conna�t pas les drapeaux Qt::Sheet et Qt::Drawer qui sont courants sur Mac OS X. Les capacit�s de QGraphicsWidget devraient augmenter en fonction des retours de la communaut�. QGraphicsLayout QGraphicsLayout fait partie d'un framework de layout de deuxi�me g�n�ration con�u sp�cialement pour QGraphicsWidget. Son API ressemble beaucoup � celle de QLayout. Vous pouvez g�rer des widgets et des sous-layouts dans QGraphicsLinearLayout ou dans QGraphicsGridLayout. Vous pouvez �galement �crire votre propre layout facilement en d�rivant QGraphicsLayout ou ajouter vos propres QGraphicsItem au layout en �crivant une classe d�riv�e de QGraphicsLayoutItem. Inclusion de widgetsLa vue graphique permet l'inclusion transparente de widgets quelconques dans la sc�ne. Vous pouvez inclure des widgets simples comme QLineEdit ou QPushButton, des widgets complexes comme QTabWidget et m�me des fen�tres principales compl�tes. Pour int�grer vos widgets dans la sc�ne, appelez simplement QGraphicsScene::addWidget() ou cr�ez une instance de QGraphicsProxyWidget pour ajouter vos widgets manuellement. Avec QGraphicsProxyWidget, la vue graphique est capable d'int�grer compl�tement les fonctions du widget client, y compris ses pointeurs, infobulles, �v�nements souris, clavier et tablette, widgets enfants, animations, pop-ups (par exemple QComboBox ou QCompleter), l'activation et le focus de saisie. QGraphicsProxyWidget int�gre aussi l'ordre de tabulation du widget inclus afin que vous puissiez tabuler vers et depuis ce widget. Vous pouvez m�me inclure une nouvelle QGraphicsView dans votre sc�ne pour cr�er des sc�nes imbriqu�es complexes. Lorsqu'elle transforme un widget inclus, la vue graphique s'assure de ce que le widget est transform� ind�pendamment de la r�solution, ce qui permet aux polices et aux styles de rester nets en cas d'agrandissement (notez que l'effet de l'ind�pendance vis-�-vis de la r�solution d�pend du style). PerformanceInstructions en virgule flottantePour pouvoir pr�cis�ment et rapidement appliquer des transformations et des effets aux �l�ments, la vue graphique suppose que le mat�riel de l'utilisateur est capable de fournir des performances raisonnables pour les instructions en virgule flottante. De nombreuses stations de travail et ordinateurs de bureau sont �quip�s de composants ad�quats pour acc�l�rer ce type de calcul mais certains appareils embarqu�s peuvent ne disposer que d'une �mulation logicielle des op�rations math�matiques ou des instructions en virgule flottante. En cons�quence, certains effets peuvent �tre plus lents qu'attendu sur certains appareils. Il peut �tre possible de compenser cette baisse de performances en r�alisant des optimisations dans d'autres domaines ; par exemple, en utilisant OpenGL pour rendre une sc�ne. Cependant, de telles optimisations peuvent elles-m�mes r�duire les performances si elles comptent sur la pr�sence de composants calculant en virgule flottante. RemerciementsMerci � <!idiallo!> pour la traduction et � <!dourouc!> ainsi qu'� <!jacques_jean!> pour leur relecture ! |
Cette page est une traduction d'une page de la documentation de Qt, �crite par Nokia Corporation and/or its subsidiary(-ies). Les �ventuels probl�mes r�sultant d'une mauvaise traduction ne sont pas imputables � Nokia. | Qt 4.7 | |
Copyright © 2025 Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'� 3 ans de prison et jusqu'� 300 000 E de dommages et int�r�ts. Cette page est d�pos�e � la SACD. | ||
Vous avez d�nich� une erreur ? Un bug ? Une redirection cass�e ? Ou tout autre probl�me, quel qu'il soit ? Ou bien vous d�sirez participer � ce projet de traduction ? N'h�sitez pas � nous contacter ou par MP ! |