蓝色框起来的是个 QFrame(我需要在上面画点东西)。
我想让QFrame不拦截鼠标单击事件(为了能按到下面的QPushButton)。
但是,现在QFrame把QPushButton的单击事件遮挡了(把QFrame设置成 enable = false并不能解决这个
问题)。
请问,应该怎么实现,置顶的控件不拦截鼠标事件呢?
我还采用过,给QFrame派生,并重载mousePressEvent(QMouseEvent *event), 函数里什么也不写。但事件依旧被拦截了。
cusFrame是覆盖在Button上面的Frame
- #include <QtGui/QDialog>
- #include "ui_painter01.h"
- #include <QFrame>
- class cusFrame : public QFrame
- {
- Q_OBJECT
- public:
- cusFrame(QWidget* parent): QFrame(parent){}
- void paintEvent(QPaintEvent *);
- void mousePressEvent(QMouseEvent *event);
-
- };
- class painter01 : public QDialog
- {
- Q_OBJECT
- public:
- painter01(QWidget *parent = 0, Qt::WFlags flags = 0);
- ~painter01();
- private:
- Ui::painter01Class ui;
- cusFrame* m_Frame;
- };
- #include "painter01.h"
- #include <QPainter>
- #include <QPushButton>
- painter01::painter01(QWidget *parent, Qt::WFlags flags)
- : QDialog(parent, flags)
- {
- ui.setupUi(this);
- QPushButton* pbnt;
- pbnt = new QPushButton(this);
- pbnt->resize(150,150);
- pbnt->move(250,250);
- m_Frame = new cusFrame(this);
- m_Frame->move(200, 200);
- m_Frame->resize(500,500);
- }
- painter01::~painter01()
- {
- }
- void cusFrame::paintEvent(QPaintEvent * event)
- {
- QPainter painter(this);
- QPen pen;
- pen.setColor(QColor(255,0,0));
- QBrush brush(QColor(0, 255,0,125));
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.drawRect(100,100,200,200);
- }
- void cusFrame::mousePressEvent(QMouseEvent *event)
- {
- }
结果图如下:
[ 此帖被liuxu_lx7在2011-05-11 14:11重新编辑 ]