代码之家  ›  专栏  ›  技术社区  ›  Postback

QFrame:创建mousePressEvent

  •  0
  • Postback  · 技术社区  · 13 年前

    实际上,我正在尝试为QT 5中的QFrame(带有QT Addin的VS2010)获取mousePressEvent。在这里和其他论坛上看到了很多建议,但新的建议奏效了,或者我不理解其中的原理。还查看了 scribble 例如,运气不佳

    如何获取QFrame的mousePressEvent?我是否必须创建一个从QFrame继承的类,然后在main()-函数中自己初始化这个框架?难道没有一个解决方案可以将它绑定到Qt设计器吗?

    尝试了很多事情,大部分都看到了这样的东西:

    protected:
    void TestQtFormsApplication::mousePressEvent(QMouseEvent *qevent)
    {
        if (qevent->button() == Qt::LeftButton)
        {
            this->close();
        }
    };
    

    有了这个,我得到了错误C2027:使用未定义的类型“QMouseEvent”

    1 回复  |  直到 13 年前
        1
  •  1
  •   cmannett85    13 年前

    子类 QFrame 和重新实现 mousePressEvent(..) 就像你的例子一样。请记住 accept() 停止其传播到父窗口小部件的事件。您的错误是因为 QMouseEvent 仅在中向前声明 QWidget 头文件,只需自己包含即可。

    如果您想在Qt Designer中使用子类,只需使用 Q框架 并将其“提升”到您的子类( docs ).

    推荐文章