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(按钮和焦点框)