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

如何用触摸数据模拟鼠标点击?

如何用QT5做一个获取网页源码的东西

手机端如何用JS实现触屏 表格列左右滑动的效果

AI作画:十分钟快速搭建自己的text-to-image diffusion models

如何用JS获取鼠标滚动高度,再触发相应的事件。速救!!!

如何用jquery优雅的给dom绑定监听事件