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