我有以下小部件的层次结构:
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 child
和label 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()
属性,它没有改变任何东西。