捕获QMainWindow 最小化事件
时间: 2024-09-15 19:06:56 浏览: 68
Qt之监听窗口改变事件(最小化、最大化、还原)
在Qt框架中,`QMainWindow` 或其他窗口可以捕获最小化事件(Minimize Event),以便在窗口被最小化时执行自定义操作。这是通过连接`QMainWindow` 的`showEvent()` 或 `closeEvent()`信号到一个槽函数来完成的,这两个信号会在窗口显示开始或关闭之前被触发。
下面是一个简单的例子,展示了如何在窗口最小化时记录这个事件:
```cpp
#include <QMainWindow>
#include <QCloseEvent>
class MainWindow : public QMainWindow {
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
connect(this, &QMainWindow::showEvent, this, &MainWindow::onShow);
connect(this, &QMainWindow::closeEvent, this, &MainWindow::onClose);
}
private slots:
void onShow(QShowEvent *event) {
qDebug() << "Window shown.";
// 在这里添加最小化时需要执行的逻辑,比如记录状态或保存数据
}
void onClose(QCloseEvent *event) {
qDebug() << "Window is closing.";
if (isMinimized()) { // 如果窗口已被最小化
// 执行特定于最小化的操作,如通知用户或保存最小化状态
qDebug() << "Window was minimized before closing.";
}
event->accept(); // 允许窗口关闭
}
signals:
// 这里不需要额外的信号,因为showEvent 和 closeEvent 已经包含了相关的动作
private:
bool isMinimized() const { return windowState() == Qt::WindowMinimized; } // 判断窗口是否最小化
};
```
在这个示例中,当窗口被最小化(`isMinimized()`返回`true`),`onShow`槽会被调用,你可以在这里添加你需要处理的逻辑。同样,如果窗口在关闭前已经被最小化,`onClose`槽会捕获到这一情况。
阅读全文