Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
Python&;QT:创建滚动帮助区域_Python_Qt_Nuke - Fatal编程技术网

Python&;QT:创建滚动帮助区域

Python&;QT:创建滚动帮助区域,python,qt,nuke,Python,Qt,Nuke,我有一个用户界面,已经变得足够复杂,用户可以使用一些帮助。我尝试过工具提示,但我不喜欢它们如何让用户体验分心。我想要的是有一个始终显示帮助的区域,文本根据鼠标悬停的位置而变化 最有效的处理方法是什么?子类化工具提示?我考虑过eventFilter,但我已经在使用它来捕获QTextEdit框的按键,我不确定如何使它适用于每个对象。我进入了一个新的领域,所以任何帮助都将不胜感激 谢谢 虽然我没有做您感兴趣的事情,但我对如何处理它(至少在最初)有一个非常好的想法,它确实涉及到使用您自己的事件过滤器对象

我有一个用户界面,已经变得足够复杂,用户可以使用一些帮助。我尝试过工具提示,但我不喜欢它们如何让用户体验分心。我想要的是有一个始终显示帮助的区域,文本根据鼠标悬停的位置而变化

最有效的处理方法是什么?子类化工具提示?我考虑过eventFilter,但我已经在使用它来捕获QTextEdit框的按键,我不确定如何使它适用于每个对象。我进入了一个新的领域,所以任何帮助都将不胜感激


谢谢

虽然我没有做您感兴趣的事情,但我对如何处理它(至少在最初)有一个非常好的想法,它确实涉及到使用您自己的事件过滤器对象。以下是基本内容:

  • 实现自己的
    QObject
    子类作为事件过滤器。这应该获取并存储要用于显示帮助文本的小部件实例(例如,a
    QLabel
  • 在事件筛选器对象上,实现
    eventFilter
    以查找
    QEvent::Enter
    事件并适当设置帮助文本,但不使用事件。您需要创建一个系统,将发出事件的对象(即光标所在的对象)映射到应该显示的帮助文本
  • 实例化过滤器,并使用
    installEventFilter
    将其添加到要触发帮助文本显示的每个小部件中
  • 以下是一些基本代码:

    class HelpTextFilter(QtCore.QObject):
    def uuu init uuu(self,helpTextWidget):
    超级(HelpTextFilter,self)。\uuu初始化(helpTextWidget)
    #每次都可以调用self.parent()来获取它,而不是
    #存储它,但这可能需要大量的方法调用。
    self.helpTextWidget=helpTextWidget
    def eventFilter(自身、发送方、事件):
    如果event.type()==QtCore.QEvent.Enter:
    #在此处获取“发件人”的帮助文本。。。
    self.helpTextWidget.setText(helpText)
    返回错误
    #登记
    evFilter=HelpTextFilter(helpTextDisplayWidget)
    对于widgetsThatNeedHelpTextDisplayed中的小部件:
    widget.installEventFilter(evFilter)
    

    希望这对您有所帮助。

    尝试将eventFilter设置为QEvent.Enter,并在whatsThis()中传递帮助文本。这是可行的,但我不确定我是否会遇到丑陋的冲突。仍然会喜欢任何想法。