Qt MouseReleaseEvent从未在eventFilter中触发

时间:2017-10-23 16:58:30

标签: c++ qt qt5 qevent

我有以下小部件的层次结构:

import sqlite3

db1 = r"C:\Users\X\Documents\sqlitedb\A.db"
db2 = r"C:\Users\X\Documents\sqlitedb\B.db"


conn = sqlite3.connect(db1)
conn.execute("ATTACH '{}' AS db2".format(db2))

res = conn.execute("SELECT name FROM sqlite_master WHERE type='table';")
for name in res:
    tblname = name[0]
    print(name[0])


res1 = conn.execute("""SELECT * FROM main."""+tblname+"""
                       WHERE IDKey NOT IN
                         (SELECT IDKey FROM db2."""+tblname+""")
                    """).fetchall()
res2 = conn.execute("""SELECT * FROM db2."""+tblname+"""
                       WHERE IDKey NOT IN
                         (SELECT IDKey FROM main."""+tblname+""")
                    """).fetchall()

我想要实现的是在root (QWidget) |-> first child (QWidget) |---> label A (QLabel) |---> label B (QLabel) |-> second child (QButton) |-> third child (QButton) (或first childlabel A上接收鼠标释放事件,无论如何行为都是相同的)

我尝试使用事件过滤器

label B

我的问题是我的测试MyWidget(QWidget* parent) : QWidget(parent) { setupUi(this); // some other stuff mFirstChild->installEventFilter(this); } bool MyWidget::eventFilter(QObject* object, QEvent* event) { if (event->type() == QEvent::MouseButtonRelease) { // do stuff return true; } return QWidget::eventFilter(object, event); } 方法永远不会被调用。我正确地接收了诸如Enter,Leave,Repaint,MousePress,MouseDblClick之类的事件,但我从来没有得到MouseRelease(顺便说一句,也没有MouseMove)。 我错过了一些明显的东西吗?

编辑:经过一些更多的研究,我尝试使用doStuff()属性,它没有改变任何东西。

0 个答案:

没有答案