QT5 如何用两个事件作画?
Posted
技术标签:
【中文标题】QT5 如何用两个事件作画?【英文标题】:QT5 How to paint with two events? 【发布时间】:2016-06-02 13:58:24 【问题描述】:我有一个区域显示波形文件的波形。 我希望一条线跟随鼠标移动,就像音频编辑器一样,这条线的行为就像播放时的进度条。 但是paintEvent函数只有一个,不播放的时候效果很好,如何实现呢?
【问题讨论】:
【参考方案1】:请记住,paintEvent
并不意味着直接对用户交互做出反应。您应该在相关的鼠标/键盘事件处理程序中处理交互,并修改描述要显示的内容的数据结构。在从事件处理程序返回之前,使用QWidget::update()
对更新进行排队。
然后将从事件循环中调用paintEvent
,并应根据更新的数据重新绘制小部件。另外不要忘记paintEvent
可以随时调用,并且您只能从paintEvent
中在小部件上进行绘制。
【讨论】:
如何同时调用repaint()
?
@Asuka 为什么你认为你想打电话给repaint()
?你应该调用update()
,它会排队一个重绘事件,最终QWidget::event
调用你对paintEvent
的重新实现。以上是关于QT5 如何用两个事件作画?的主要内容,如果未能解决你的问题,请参考以下文章