2011-08-19 6 views

Répondre

2

Utilisez un QSizeGrip

La classe QSizeGrip fournit une poignée de redimensionnement pour redimensionner les fenêtres de haut niveau.

3

Je viens de rencontrer ce problème, et je l'ai résolu en ajoutant des gestionnaires personnalisés mouseEvent pour mon QMainWindow. J'utilise PyQt, mais il devrait être assez similaire en C++.

Dans ma mise en œuvre, en faisant glisser le bouton droit de la souris n'importe où sur le widget sans cadre (appelé MyClass) le redimensionne.

Lorsque le bouton droit de la souris enfoncé, stocker les coordonnées:

def mousePressEvent(self, event): 
    super(MyClass, self).mousePressEvent(event) 

    if event.button() == QtCore.Qt.RightButton: 
     self.rdragx = event.x() 
     self.rdragy = event.y()   
     self.currentx = self.width() 
     self.currenty = self.height() 
     self.rightClick = True 

Si la souris est déplacé alors que le bouton est toujours pressé (à savoir, quand il est traîné), redimensionner la QMainWindow. Ne lui permettez pas de devenir plus petit que la taille minimum prédéfinie. Lorsque le bouton de la souris est relâché, réinitialisez la variable de bouton sur False pour arrêter le redimensionnement lors du mouvement.

def mouseReleaseEvent(self, event): 
    super(MyClass, self).mouseReleaseEvent(event) 
    self.rightClick = False