【发布时间】:2017-06-22 00:49:32
【问题描述】:
在我的 Qt 应用程序中,我使用的是 QCalendarWidget,我希望在鼠标进入日历的新单元格时收到通知。我知道QCalendarWidget 在内部使用QTableView,它继承自QAbstractItemView,它有一个entered 信号:
当鼠标光标进入指定项目时发出此信号 按索引。需要启用鼠标跟踪才能使用此功能。
我尝试使用以下代码接收信号:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyCalendar:
def __init__(self):
app = QApplication(sys.argv)
window = QMainWindow()
cal = QCalendarWidget(window)
window.resize(320, 240)
cal.resize(320, 240)
table = cal.findChild(QTableView)
table.setMouseTracking(True)
table.entered.connect(self.onCellEntered)
window.show()
sys.exit(app.exec_())
def onCellEntered(self, index):
print("CellEntered")
if __name__ == "__main__":
window = MyCalendar()
但我的回调函数永远不会被调用。你有什么想法吗?
【问题讨论】:
-
如果您将代码扩展为一个可以运行并显示问题的小示例,那就太好了。
-
@GeorgSchölly 我已经用一个显示
QCalendarWidget的工作窗口应用程序更新了问题中的代码,但尽管信号已连接,但从未调用onCellEntered方法。
标签: python qt pyqt signals-slots qcalendarwidget