我在网上查阅了很多关于这方面的资料,但没有找到我需要的东西。我想在Qt中做一个可重用的绘画功能。例如,我会有一个
void paintRectangle(QPaintEvent*, int x, int y);函数,我可以在循环中调用该函数,并从x和y坐标开始绘制一个矩形。这个是可能的吗?你能把草稿/大纲写下来吗?我该怎么写?当它准备好的时候,我如何在循环中调用它?我真的没在这上面找到什么。另外,我如何调用这个函数?调用时,我应该写什么来代替QPaintEvent *呢?
正如我注意到的,在任何类构造函数之前都会调用油漆。这是正确的吗?我希望屏幕上有一定数量的矩形,这取决于一个n变量,当某个类被实例化时,这个变量将被声明。就我目前的试验而言,当我的功能试图描绘任何东西时,n似乎是没有定义的。
发布于 2016-03-27 16:43:21
唯一的限制是,当您在小部件上绘图时,它必须发生在该小部件的画图事件中。如果您的画图设备不是一个小部件,那么这并不重要。
除此之外,没有什么可以阻止您使用任何参数多次调用任意数量的绘图函数,只需确保在小部件的事件中调用它们。例如:
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(),就可以构造一个小部件而不对其进行绘制。如果将调试消息放入构造函数和画图事件中,则会看到构造函数总是在绘制事件之前执行。事实上,调用尚未完全构造的对象的成员函数是完全非法的。
https://stackoverflow.com/questions/36249645
复制相似问题