qt子窗口跟随父窗口移动
时间: 2023-08-14 10:14:26 浏览: 304
在Qt中,可以通过重写子窗口的`moveEvent()`函数来实现子窗口跟随父窗口移动的效果。下面是一个简单的示例代码:
```cpp
#include <QtWidgets>
class SubWindow : public QWidget {
public:
SubWindow(QWidget *parent = nullptr) : QWidget(parent) {}
protected:
void moveEvent(QMoveEvent *event) override {
if (parentWidget()) {
QPoint parentPos = parentWidget()->pos();
move(parentPos);
}
QWidget::moveEvent(event);
}
};
class MainWindow : public QMainWindow {
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
resize(400, 300);
subWindow = new SubWindow(this);
subWindow->resize(200, 150);
subWindow->move(50, 50);
}
private:
SubWindow *subWindow;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
```
在上述代码中,`SubWindow`类是自定义的子窗口类,它重写了`moveEvent()`函数。在`moveEvent()`函数中,如果子窗口有父窗口,则获取父窗口的位置,并将子窗口移动到相同的位置。这样,每当父窗口移动时,子窗口也会相应地移动。
在`MainWindow`类中,我们创建了一个主窗口,并在主窗口中添加了一个自定义的子窗口`subWindow`。当我们移动主窗口时,子窗口会跟随主窗口移动。
请注意,以上代码只是一个简单的示例,您可以根据自己的需求进行修改和扩展。
阅读全文