qt 实现弹出窗口,点击其他位置消失
下面是使用 Qt 实现点击其他位置消失的弹出窗口的示例代码,包括头文件和源文件。本示例使用了 QWidget 和 QEvent 类。
popupwidget.h 头文件:
#ifndef POPUPWIDGET_H
#define POPUPWIDGET_H
#include <QWidget>
class PopupWidget : public QWidget
{
Q_OBJECT
public:
explicit PopupWidget(QWidget *parent = nullptr);
protected:
virtual void paintEvent(QPaintEvent *event) override;
virtual void mousePressEvent(QMouseEvent *event) override;
virtual bool eventFilter(QObject *watched, QEvent *event) override;
private:
QWidget *m_parentWidget;
};
#endif // POPUPWIDGET_H
popupwidget.cpp 源文件:
#include "popupwidget.h"
#include <QPainter>
#include <QDebug>
#include <QMouseEvent>
#include <QApplication>
PopupWidget::PopupWidget(QWidget *parent) : QWidget(parent), m_parentWid