qt 防止 qdialog/window 随主窗口一起移动
qt prevent qdialog/window from moving with mainwindow
环境
- OS X 10.6.8 ...及更高版本,Windows XP ...及更高版本。
- Qt 4.7(必须,遗留问题,OSX 10.6.8必须支持,Qt5不行)
问题
我在我的应用程序中打开了第二个 window。它的行为如我所愿,除了 如果应用程序中的 MainWindow 移动,这个 window 也会移动。这种行为是不受欢迎的(实际上更像是 "toxic and user-unfriendly")。
Qt 文档说不要从 moveEvent() 中调用 move(),无论如何 moveEvent() 只会在 window 停止移动后出现,甚至 while 移动,即使我成功使用它,也会导致第二个 window 移动并弹回,这将非常糟糕。
我想尝试覆盖 move() 而不是调用 QDialog::move(),但是那没有用,看来它不能被覆盖; rfview window 仍然跟随 mainwindow 左右。
可能是我打开window错了:
void MainWindow::xrfview()
{
ttrfview = new rfview(this);
uiframePlot = ttrfview->ui->framePlot;
ttrfview->show();
ttrfview->raise();
}
或者我把window定义错了:
class rfview: public QDialog
{
Q_OBJECT
public:
explicit rfview(QWidget *parent = 0);
~rfview();
}
或者两者兼而有之?
基本上,如果用户 drags/re-positions MainWindow,我 不 希望 rfview
window 跟随。
将ttrfview = new rfview(this)
更改为ttrfview = new rfview()
环境
- OS X 10.6.8 ...及更高版本,Windows XP ...及更高版本。
- Qt 4.7(必须,遗留问题,OSX 10.6.8必须支持,Qt5不行)
问题
我在我的应用程序中打开了第二个 window。它的行为如我所愿,除了 如果应用程序中的 MainWindow 移动,这个 window 也会移动。这种行为是不受欢迎的(实际上更像是 "toxic and user-unfriendly")。
Qt 文档说不要从 moveEvent() 中调用 move(),无论如何 moveEvent() 只会在 window 停止移动后出现,甚至 while 移动,即使我成功使用它,也会导致第二个 window 移动并弹回,这将非常糟糕。
我想尝试覆盖 move() 而不是调用 QDialog::move(),但是那没有用,看来它不能被覆盖; rfview window 仍然跟随 mainwindow 左右。
可能是我打开window错了:
void MainWindow::xrfview()
{
ttrfview = new rfview(this);
uiframePlot = ttrfview->ui->framePlot;
ttrfview->show();
ttrfview->raise();
}
或者我把window定义错了:
class rfview: public QDialog
{
Q_OBJECT
public:
explicit rfview(QWidget *parent = 0);
~rfview();
}
或者两者兼而有之?
基本上,如果用户 drags/re-positions MainWindow,我 不 希望 rfview
window 跟随。
将ttrfview = new rfview(this)
更改为ttrfview = new rfview()