2016-12-24 8 views
1

Envкварты предотвратить QDialog/окно от перемещения с MainWindow

  • OS X 10.6.8 ... и позже, Windows XP ... и позже.
  • Qt 4.7 (должно быть, унаследованные проблемы, OS X 10.6.8 должны быть поддержаны, Qt5 не делать)

Проблема

Я открыл второе окно в моем заявление. Он ведет себя так, как я хочу, , за исключением, что если MainWindow в приложении перемещается, то и это окно. Это поведение нежелательно (на самом деле больше похоже на «токсичный и недружелюбный пользователь»).

в Qt документы говорят не вызывать движение() из moveEvent(), и в любом случае moveEvent() показывает только после того, как окно перестал двигаться, даже не в то время как перемещение, который бы, даже если бы я его использовать успешно, приведет к перемещению второго окна и привязке назад, что было бы довольно ужасно.

Я решил попробовать переопределить move() и не вызвать QDialog :: move(), но это не сработало, кажется, что его нельзя переопределить; Окно rfview по-прежнему следует за основным окном.

Возможно, я открываю окно неправильно:

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

Или, возможно, я определил окно неправильно:

class rfview: public QDialog 
{ 
    Q_OBJECT 

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

Или как?

В принципе, если пользователь перетаскивает/переустанавливает MainWindow, я делаю не хочу окно rfview.

+0

ТРТ с: ttrfview = новый rfview(); – eyllanesc

+0

@eyllanesc да, это работает под OS X, моя среда для разработчиков. Пожалуйста, сделайте это ответом, и я дам галочку «ol». Спасибо за очень быстрое решение. – fyngyrz

ответ