2016-12-24 4 views
1

qt empêchent QDialog/fenêtre de se déplacer avec mainwindow

Env
  • OS X 10.6.8 ... et plus tard, Windows XP ... et versions ultérieures.
  • Qt 4.7 (doit être, problèmes hérités du passé, OS X 10.6.8 doit être pris en charge, QT5 ne le fera pas)

Problème

J'ai ouvert une deuxième fenêtre dans mon application. Il se comporte comme je le veux, sauf que si la MainWindow dans l'application se déplace, il en va de même pour cette fenêtre. Ce comportement est indésirable (en fait plus comme "toxique et inutilisable").

Les docs Qt disent ne pas appeler move() à l'intérieur moveEvent(), et de toute façon moveEvent() ne montre après la fenêtre a cessé de bouger, même pas tout mouvement, ce qui serait, même si je ne l'utilise avec succès, la deuxième fenêtre se déplacera et reprendra, ce qui serait plutôt horrible.

Je pensais essayer de remplacer move() et n'appelant pas QDialog :: move(), mais cela ne fonctionnait pas, il semble qu'il ne peut pas être remplacé; La fenêtre rfview suit toujours la fenêtre principale.

Peut-être que j'ouvre la mauvaise fenêtre:

void MainWindow::xrfview() 
{ 
    ttrfview = new rfview(this); 
    uiframePlot = ttrfview->ui->framePlot; 
    ttrfview->show(); 
    ttrfview->raise(); 
} 

Ou peut-être que je l'ai défini la mauvaise fenêtre:

class rfview: public QDialog 
{ 
    Q_OBJECT 

public: 
    explicit rfview(QWidget *parent = 0); 
    ~rfview(); 
} 

Ou les deux?

Fondamentalement, si l'utilisateur fait glisser/re-positionne MainWindow, je ne pas voulez la fenêtre rfview à suivre.

+0

avec trt: ttrfview = new rfview(); – eyllanesc

+0

@eyllanesc oui, cela a fonctionné sous OS X, mon environnement de développement. S'il vous plaît en faire une réponse et je vais donner la 'coche. Merci pour une solution très rapide. – fyngyrz

Répondre

1

changement ttrfview = new rfview(this) à ttrfview = new rfview()