【问题标题】:qt button to emit multiple signalsqt按钮发出多个信号
【发布时间】:2015-04-20 14:48:03
【问题描述】:

是否有一个 Qt(我使用 Qt 4.7.1)小部件在按下时发出信号(不仅仅是第一次发出信号)并在用户释放鼠标时停止?像标准间隔中的 mousedown 事件? 还是我必须用 qtimer 来实现它? 谢谢

【问题讨论】:

    标签: qt signals mouseevent


    【解决方案1】:

    查看QAbstractButton::autoRepeat 和 autoRepeatInterval。它应该正是您所需要的,并且适用于所有按钮。

    【讨论】:

    • +1 用于发现 OP 想要的功能(并正确回答问题:))
    【解决方案2】:

    在用户释放鼠标之前,您必须实现一些触发事件的方法。

    我建议您创建一个连接到按钮事件的处理程序类,该事件会根据您的观察者触发自定义事件。

    【讨论】:

      【解决方案3】:

      据我所知,没有这样的按钮小部件。QPushButtonautoRepeat 应该可以满足您的需求。但是QPushButton::pressed()QPushButton::released() 信号不足以满足您的需求吗?

      无论如何,您所描述的内容很容易实现(并且是多余的,因为它已经存在),将QTimer::timeout() 信号连接到您想要的信号,然后在pressed() 信号上启动计时器并停止它在released() 信号上:)

      编辑:正如 cmets 中所指出的,有一个内置解决方案,即设置从 QAbstractButton 继承的属性 autoRepeattrue

      您可以通过调整autoRepeatDelayautoRepeatInterval来自定义初始延迟和间隔。

      【讨论】:

      • 好的,谢谢,这是我想到的解决方案。感谢您确认没有具有此功能的 qwidget
      • 但是有!查看 Frank Osterfeld 的回答
      • 啊,不知道,抱歉:)
      猜你喜欢
      • 1970-01-01
      • 2021-02-12
      • 2020-10-28
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多