我正在尝试编写一个绘画程序(在检测到鼠标按下/按住的地方绘画),但我在使用 Qt QPainter时遇到了问题。我已经阅读了他们网站上的文档,但我仍然有点迷茫。一个不在他们网站上的教程的链接会很好,或者可以向我解释我如何在 Qt 中完成这个。我唯一能做的就是在小部件上画点。
3 回答
检查 Qt 附带的Scribble示例,它完全符合您的要求。
我们重新实现了鼠标事件处理程序来实现绘图,绘制事件处理程序来更新应用程序和调整大小事件处理程序来优化应用程序的外观。此外,我们重新实现了关闭事件处理程序以在终止应用程序之前拦截关闭事件。
该示例还演示了如何使用 QPainter 实时绘制图像,以及重新绘制小部件。
使用 QtAssistant 并浏览到 QPainter 上的条目。从那里您将看到使用 QPainter 的各种功能的示例程序的链接,例如:http ://doc.trolltech.com/4.5/painting-basicdrawing.html
QtAssistant 应该是您的第一资源。这是相当彻底的。如果那没有帮助,我推荐QtCentre的论坛。都是一些知识渊博的人。
我只能猜测您的问题是什么,但我的猜测是您遇到了一个古老的问题,即paintEvent 用于更新页面。实现绘图程序的方法是首先创建一个 QPixmap 或 QImage 作为绘图缓冲区。然后用鼠标按下/移动/释放方法在上面绘画。当您更新绘图缓冲区时,所有更新(并且是一个好孩子并指出需要更新的区域)。这将触发对您的paintEvent 方法的调用,您只需将请求的矩形(QPaintEvent::rect())blit 到屏幕上。