Qt-具有自定义参数的可重用绘制函数
Qt - reusable paint functions with custom arguments
我在互联网上浏览了很多关于这方面的材料,但没有找到我需要的东西。我想在Qt中制作一个可重复使用的绘画功能。例如,我会有一个
void paintRectangle(QPaintEvent*, int x, int y);
函数,我可以在循环中调用它,并从x和y坐标开始绘制一个矩形。这可能吗?你能写下我应该如何写的草稿/提纲吗?以及当它准备好后,我如何在循环中调用它?我真的没有发现任何关于这个的东西。另外,我该如何调用此函数?打电话时用什么代替QPaintEvent *
?
正如我所注意到的,paintevents在任何类构造函数之前都会被调用。这是正确的吗?我希望在屏幕上有一定数量的矩形,这取决于一个n
变量,当某个类被实例化时,该变量被声明。在我目前的试验中,当我的功能试图绘制任何东西时,似乎n
是未定义的。
唯一的限制是,当您在小部件上绘制时,它必须发生在该小部件的绘制事件中。如果你的绘画设备不是一个小部件,那也没关系。
除此之外,没有什么可以阻止您使用所需的任何参数多次调用任何数量的绘制函数,只需确保在小部件的绘制事件中调用它们即可。例如:
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);
}
正如我所注意到的,paintevents在任何类构造函数之前都会被调用。这是正确的吗?
你在哪里注意到的?我非常怀疑一个小部件在构造之前是否会被绘制;)您的担心是没有根据的,在构建之前没有绘制任何小部件,事实上,如果您不调用show()
,您可以在不绘制小部件的情况下构建它。如果在构造函数和绘制事件中放入调试消息,您将看到构造函数始终在绘制事件之前执行。事实上,调用尚未完全构造的对象的成员函数是完全"非法"的。
相关文章:
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- CGAL 绘制函数在 Visual Studio 中给出'CGAL_USE_BASIC_VIEWER is not defined'错误
- 使用 glDrawArray 函数绘制三角形
- C++ SFML 创建形状向量并在函数中绘制它们
- 如何在调用函数时将对象绘制到 sfml 窗口上
- 获取以矩形()函数绘制的矩形
- 调用 sf::矩形形状绘制函数
- 使用 c++ 中函数的执行时间绘制图形
- 如何调用OnEraseBkgnd()在另一个函数中重新绘制窗口?(MFC)
- c++ Glut 显示需要调用我的绘制函数,但我无法传递任何参数
- 变量指针的成员函数未绘制到SDL_Surface?
- 禁用 CListCtrl 自定义绘制函数中的行或将其显示为灰色
- 使用函数在 c++ 中绘制矩形
- 使用OpenCV教程中的任何一个进行人脸检测是否有任何函数可以计算绘制在人脸上的矩形的大小
- Qt-具有自定义参数的可重用绘制函数
- 开放框架:绘制函数被多次调用
- 使用glew绘制函数以进行屏幕外渲染
- 绘制函数定时器openframeworks
- 在何处保存 QWidget 动画的状态以在 QStyle 绘制函数中使用
- OpenGL中绘制函数范围内的静态变量