“opengl鼠标交互”复选框
opengl mouse interaction checkbox
我试图从头开始创建一个复选框,但遇到了一些问题。
在我的control.h文件中,我初始化了
public : int checked = 0;
因此,每当鼠标按下正确的区域时,checked
就会变成一个。drawCheckBox方法将检查它是1还是0,并在框上打一个复选框。程序运行,但是当我按下框区域并检查checked
的值时,它一直显示0。我不知道为什么。
绘制复选框/检查用户是否选中
// Function to generate food selection box in left selection area.
void Control::drawCheckBox(string food, double x1, double y1, double x2, double y2)
{
glColor3f(0, 1, 1);
//placement of the check box
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glRectf(x1, y1, x2,y2);
// Draw black boundary.
glColor3f(0.0, 0.0, 0.0);
glLineWidth(5);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glRectf(x1, y1, x2, y2);
if (checked == 1)checker(x1, y1, x2, y2); // checks the check box.
else glColor3f(1, 1, 1);
cout << checked;
}
鼠标回调程序
// The mouse callback routine.
void mouseControl(int button, int state, int x, int y)
{
Control check;
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
// Store the clicked point in the points array after correcting
// from event to OpenGL co-ordinates.
//points.push_back(Point(x, height - y));
if ((x >= 5 && x <= 10) && (y <= 85 && y >= 80))
{
if (check.checked == 1)
{
check.checked = check.checked - 1;
}
else check.checked++;
}
if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) exit(0);
glutPostRedisplay();
}
首先,在mouseControl()
函数中本地声明Control check;
的对象
我推测您的Control
构造函数正在将Control::checked
状态初始化为0
因此,您将始终看到Control::checked
的值为0
。
您需要决定Control check
对象的范围和生存期。希望这将有助于解决这个问题。
否则,如果您发布更多的代码,特别是完整的Control
类实现以及在哪里以及如何调用mouseControl
,将会有所帮助。
然后我们可以弄清楚该怎么做。
相关文章:
- 根据变量使Qt UI中的复选框为已选中/未选中
- "动态创建的事件处理程序"复选框
- 有没有办法在取消选中复选框时隐藏按钮?
- 如何删除Qt设计器中自定义插件的QString属性的"translatable"复选框?
- 设置复选框选项C++
- 如何在所有者描述的 MFC CMenu 派生菜单中显示复选框?
- 如何在MFC对话框应用程序中默认将复选框设置为选中?
- 如何使复选框独占
- AccessObjectFromPoint 返回客户端对象而不是复选框
- Windows 32 API:2个复选框作为一个
- 如何在 QT3 中将复选框添加到 QFileDialog 窗口
- 在 QComboBox 中切换复选框
- 调整QT创建者的复选框
- 如何在C 上创建复选框过滤器
- 如何设置按钮的背景颜色,包括复选框按钮
- 使用 ffh.getFieldType() 检查复选框 == "/Btn" 与 qpdf lib
- 如何在多行文本C++的左上角显示复选框
- Win32如何制作多个复选框并以不同的方式管理它们
- QtableWidget 标题上的复选框
- “opengl鼠标交互”复选框