首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt -带有自定义参数的可重用画图函数

Qt -带有自定义参数的可重用画图函数
EN

Stack Overflow用户
提问于 2016-03-27 16:16:08
回答 1查看 457关注 0票数 0

我在网上查阅了很多关于这方面的资料,但没有找到我需要的东西。我想在Qt中做一个可重用的绘画功能。例如,我会有一个

代码语言:javascript
复制
void paintRectangle(QPaintEvent*, int x, int y);

函数,我可以在循环中调用该函数,并从x和y坐标开始绘制一个矩形。这个是可能的吗?你能把草稿/大纲写下来吗?我该怎么写?当它准备好的时候,我如何在循环中调用它?我真的没在这上面找到什么。另外,我如何调用这个函数?调用时,我应该写什么来代替QPaintEvent *呢?

正如我注意到的,在任何类构造函数之前都会调用油漆。这是正确的吗?我希望屏幕上有一定数量的矩形,这取决于一个n变量,当某个类被实例化时,这个变量将被声明。就我目前的试验而言,当我的功能试图描绘任何东西时,n似乎是没有定义的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-27 16:43:21

唯一的限制是,当您在小部件上绘图时,它必须发生在该小部件的画图事件中。如果您的画图设备不是一个小部件,那么这并不重要。

除此之外,没有什么可以阻止您使用任何参数多次调用任意数量的绘图函数,只需确保在小部件的事件中调用它们。例如:

代码语言:javascript
复制
void paintEvent(QPaintEvent *) {
    QPainter p(this);
    // setup painter
    for (int i = 0; i < 200; i += 10) drawFoo(i, p);
}

void drawFoo(int i, QPainter & p) {
    p.drawPoint(i, i);
}

正如我注意到的,在任何类构造函数之前都会调用油漆。这是正确的吗?

你从哪注意到的?我非常怀疑在创建小部件之前是否会对其进行绘制;)您的关注是没有根据的,在构建小部件之前没有绘制任何小部件,事实上,如果您不调用show(),就可以构造一个小部件而不对其进行绘制。如果将调试消息放入构造函数和画图事件中,则会看到构造函数总是在绘制事件之前执行。事实上,调用尚未完全构造的对象的成员函数是完全非法的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36249645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档