0

实际上,我正在尝试为 QT 5(带有 Qt-Addin 的 VS2010)中的 QFrame 获取 mousePressEvent。在这里和其他论坛上看到了很多建议,但是更新的让它起作用,或者我不理解原理。还看了涂鸦示例,没有运气

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

尝试了多种方法,主要看到的是这样的:

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

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

4

1 回答 1

1

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

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

于 2013-04-25T07:03:48.687 回答