Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 在ENML中捕获事件中的窗口焦点_Qt_Pyqt_Enaml - Fatal编程技术网

Qt 在ENML中捕获事件中的窗口焦点

Qt 在ENML中捕获事件中的窗口焦点,qt,pyqt,enaml,Qt,Pyqt,Enaml,当窗口进入焦点时(成为活动窗口,例如当其上方的窗口关闭时),我是否可以执行代码?我希望windows只具有焦点事件或属性,但事实似乎并非如此 Qt中有焦点事件。如果ENML不提供此功能,那么访问这些底层Qt事件的最简单方法是什么 我希望能够做到以下几点: enamldef MyWindow(Window): focus :: do_stuff() 如果您只想跟踪哪个小部件具有焦点,可以使用FocusTracker对象。只需在任意位置创建一个实例,并对focused\u

当窗口进入焦点时(成为活动窗口,例如当其上方的窗口关闭时),我是否可以执行代码?我希望windows只具有焦点事件或属性,但事实似乎并非如此

Qt中有焦点事件。如果ENML不提供此功能,那么访问这些底层Qt事件的最简单方法是什么

我希望能够做到以下几点:

enamldef MyWindow(Window):
    focus ::
        do_stuff()

如果您只想跟踪哪个小部件具有焦点,可以使用
FocusTracker
对象。只需在任意位置创建一个实例,并对
focused\u widget
属性做出反应:

要处理特定小部件上的焦点,需要启用功能标志并重新实现处理程序功能:

代码在一个特性标志后面,因为后端所需的工作是非常重要的,我们不想在不必要的时候做这些工作

这里没有焦点处理的示例,但下面是一些使用声明性函数和其他“隐藏”功能(如拖放)的示例:

您可能只想使用Qt/PyQt。这是我第一次听说
enaml
,但是在简单地看了一下之后,我不确定抽象提供的限制是否真的值得。它似乎也缺少文档,我不同意它缺少文档。它可能没有一个浮华的网站,但API文档非常完整和详细。几乎每一个特性都有一个完整的示例目录:我认为你在只对项目进行了一次公认的“简要”检查之后就提出批评是有点不公平的。代码很容易阅读,文档也相当完整。这些例子很有用。缺少的是教程。我确实需要比我希望的更频繁地查看代码本身(不仅仅是文档)。
enamldef MyWindow(Window):
    Field:
        features = Feature.FocusEvents
        focus_gained => ():
            print 'got focus'
        focus_lost => ():
            print 'lost focus'