2013-04-25 164 views
0

实际上,我正在尝试为QT 5(VS2010与Qt-Addin)中的QFrame获取mousePressEvent。在这里和其他论坛上看到这么多的建议,但更新的工作,或我不明白princip。也看了scribble的例子,没有运气QFrame:创建mousePressEvent

我怎样才能得到一个QFrame的mousePressEvent?我是否必须创建一个继承自QFrame的类,然后在main()函数中自行初始化此框架?是不是有一个解决方案,我可以将它绑定到Qt设计器?

试过许多东西,主要是看到了这样的事情:

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

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

+0

你忘记了包括nesessary? 的#include 的#include 2013-04-25 07:25:31

+0

现在C2027错误是固定的,忘了,包括所有必要的文件 – Postback 2013-04-25 07:44:25

回答

1

子类QFrame和重新实现mousePressEvent(..)很像你在你的例子中。请记住accept()事件以阻止它传播到父窗口小部件。您的错误是因为QMouseEvent仅在QWidget头文件中进行了前向声明,请自行包含它。

如果您想在Qt Designer中使用您的子类,只需使用QFrame并将其'升级'到您的子类(docs)。

+0

我现在已经促进了QFrame到CustomFrame。 CustomFrame现在是QFrame的子类,但它现在抛出错误,它无法找到任何匹配的构造函数,所以我认为它们没有从QFrame插入,如何解决这个问题? CustomFrame.h看起来像这样从上面的旧的实现是在.cpp文件 类DragDropFrame:公共QFrame { 保护: \t无效mousePressEvent(QMouseEvent * QEVENT); }; – Postback 2013-04-25 07:41:29

+1

@Postback Err ...该代码甚至没有构造函数!您将需要一个采用'QWidget *'的方法,以便可以指定父项。 – cmannett85 2013-04-25 07:46:51

+1

哦,完全忘了。 thx已经解决了这个问题,现在一切正常 – Postback 2013-04-25 07:52:10

相关问题