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 如何用两个事件作画?的主要内容,如果未能解决你的问题,请参考以下文章