QT5下的QPushButton错误,同时在macos上推送到全屏

Posted

技术标签:

【中文标题】QT5下的QPushButton错误,同时在macos上推送到全屏【英文标题】:QPushButton bug under QT5 while pushing to go to fullscreen on macos 【发布时间】:2017-06-14 07:06:13 【问题描述】:

我制作了一个支持全屏的小型视频应用。播放视频时,我可以按下视频控制器中的按钮,应用程序变为全屏。 优点是,当我处于全屏状态时,按钮仍然以某种方式具有焦点,当我移过它时,它认为我按下了(即使我没有超过它,按钮的悬停也是活动的)鼠标) 当我在按下按钮后没有移动鼠标时,这种行为会在全屏和全屏之间无休止地结束

我在 Qt4 中遇到过类似的问题,但是这里的鼠标悬停只有在按下后才处于活动状态

所以也许有人知道这里发生了什么,在 Qt 错误列表中找不到任何东西

乔治

【问题讨论】:

请向我们展示相关代码,或许还可以展示一段展示这种行为的短片。 【参考方案1】:

我不知道这是错误还是预期行为,但是您可以尝试通过多种方式解决此问题。在每次更改窗口大小时调用的槽中,调用以下一种或几种QPushButton 方法:

    clearFocus() - 应该让按钮停止接收键盘/鼠标输入;

    releaseKeyboard()releaseMouse() 应该有效地做同样的事情;

如果您在全屏时不需要该按钮,您也可以简单地让它完全停止接收任何用户输入:

    禁用它 (setEnabled(false));

    通过调用setVisible(false)使其不可见(不可见的小部件不接收键盘/鼠标输入);

    disconnect()按钮,使其停止接收任何信号,关闭全屏模式后再次connect()

【讨论】:

以上是关于QT5下的QPushButton错误,同时在macos上推送到全屏的主要内容,如果未能解决你的问题,请参考以下文章

QT5控件-QPushButton和QFocusFrame(按钮和焦点框)

QT5中怎样connect QPushButton和QLabel

如何在 QT5.6.1 中创建自定义按钮

Qt 5 将带有参数的插槽分配给 QPushButton

聚焦时图像未突出显示的 QPushButton (MAC)

Qt 5.4 - Mac OS X 10.6 支持