捕获/重写窗体的最大最小华事件


const int WM_SYSCOMMAND = 0x112;
const int SC_CLOSE = 0xF060;
const int SC_MINIMIZE = 0xF020;
const int SC_MAXIMIZE = 0xF030;
protected override void WndProc(ref Message m)
{
 if (m.Msg == WM_SYSCOMMAND)
 {
  if (m.WParam.ToInt32() == SC_MINIMIZE)
  {
   this.Visible = false;
   return;
  }
 }
 base.WndProc(ref m);
}

转载于:https://www.cnblogs.com/eycbest/archive/2008/01/20/1046537.html

在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`槽会捕获到这一情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值