7
votes

QT: redimensionner le widget sans frontière

Ma question est fondamentalement la même chose que Celui-ci , mais appliqué au cadre QT C ++.

Je suis implémentant une fenêtre contextuelle en héritant qwidget avec des drapeaux qt :: qpopup | Qt :: qwindow. J'aimerais que cette fenêtre soit mobile et redimensionnable, je l'obtiens actuellement en utilisant les événements de la souris dans le code suivant: xxx

J'ai quelques problèmes avec cela. Pour un, je suppose qu'il y a une meilleure façon de le faire. Et plus important encore, je voudrais le symbole de redimensionnement en bas à droite comme dans cette image] (extrait du poste mentionné ci-dessus). Toute suggestion pour la réalisation de cela?

Entrez la description de l'image ici


1 commentaires

Je suis sûr que vous êtes au courant de cela, mais d'autres en lisant cela pourraient ne pas être. La documentation sur Windows sans bordure Qt indique que "l'utilisateur ne peut pas bouger ni redimensionner une fenêtre sans bordure via le système de fenêtre".


3 Réponses :


9
votes

Vous pouvez ajouter la poignée de redimensionnement en appelant la fonction Qdialog ou QStatusbar's's's's Function SetSizeGripEnabled < / a> (ou directement dans le concepteur de formulaire qtcreator).

Pour les widgets personnalisés La manière la plus simple est probablement d'utiliser QSIZEGRIP . Je ne l'ai pas utilisé moi-même, mais vous pouvez vérifier le code source QT sur git pour qstatusbar ou Qdialog .


1 commentaires

Hey merci, cela semble fonctionner. J'ai des problèmes avec la classe QSizegrip, mais au moins cela fournit la fonctionnalité.



1
votes

Vous pouvez utiliser qsizegrip dans une mise en page dans votre widget: xxx

the qsizegrip classe fournit une poignée de redimensionnement pour redimensionnement de la top- Windows de niveau. Lorsque vous définissez le drapeau de widget qt :: subwindow , l'utilisateur peut le redimensionner à l'aide de la grip de la taille.


0 commentaires

10
votes

Si vous ne voulez pas qsizegrip Vous pouvez jeter un oeil à cette solution:

sans cadre.h : xxx

fradeless.cpp : xxx

et simplement créer une instance et mettre votre qwidget : xxx


0 commentaires