2010-06-06 5 views
1

Comment dessiner des widgets interactifs tels que QButtons et Line Edits sur un QGraphicsView? Par exemple, j'ai sélectionné une région sur une image dans une application d'édition d'image qui affiche une image avec QGraphicsView, et je veux annoter cette région avec un nom. Donc je veux avoir une modification de ligne et deux boutons (croix et tique) en dessous de cette sélection rectangulaire. Comment puis-je les dessiner?Dessiner des widgets (tels que des boutons) sur QGraphicsView

Exemple de code serait cool!

Répondre

2

QGraphicsScene a une fonction addWidget() où vous pouvez ajouter un widget à une scène. Si vous ne voulez pas passer par la fonction addWidget de la scène, vous pouvez créer un QGraphicsProxyWidget et utiliser le widget setWidget() pour ajouter le widget proxy à votre scène.

+0

Merci, c'est ce que je voulais. –

2

Vous pouvez simplement les ajouter comme vous le feriez avec n'importe quel autre contrôle. Je Designer Qt pour générer les éléments suivants:

class MyForm: public QMainWindow 
{ 
    private: 
     QGraphicsView *graphicsView; 
     QLineEdit *lineEdit; 
     QPushButton *pushButton; 
     QPushButton *pushButton_2; 
    public: 
     MyForm() 
     { 
      graphicsView = new QGraphicsView(this); 
      graphicsView->setObjectName(QString::fromUtf8("graphicsView")); 
      graphicsView->setGeometry(QRect(130, 90, 441, 191)); 
      lineEdit = new QLineEdit(graphicsView); 
      lineEdit->setObjectName(QString::fromUtf8("lineEdit")); 
      lineEdit->setGeometry(QRect(160, 150, 113, 22)); 
      pushButton = new QPushButton(graphicsView); 
      pushButton->setObjectName(QString::fromUtf8("pushButton")); 
      pushButton->setGeometry(QRect(280, 140, 115, 32)); 
      pushButton_2 = new QPushButton(graphicsView); 
      pushButton_2->setObjectName(QString::fromUtf8("pushButton_2")); 
      pushButton_2->setGeometry(QRect(400, 140, 115, 32)); 
     } 
}; 
+1

Je ne vois aucune disposition – Phlip

+0

@Phlip Il n'y a pas de disposition, seulement la géométrie. http://stackoverflow.com/a/2296040/1090455 –

+1

que sez "ajouter la barre de progression en tant qu'enfant de votre QWidget sans l'ajouter dans la mise en page." Tx - si cela signifie un objet-> addChild (x) ou similaire est disponible. Je n'ai presque aucun projet Qt sur n'importe quel bureau en ce moment; les exigences du boom économique. – Phlip

Questions connexes