下一个教程: 部件姿态
目标
本教程将学习如何:
- 打开一个可视化窗口。
- 通过名称访问窗口。
- 启动事件循环。
- 启动指定时间的事件循环。
代码
您可以从 这里 下载代码。
#include <iostream>
static void help()
{
cout
<< "--------------------------------------------------------------------------" << endl
<< "本程序演示如何启动一个 3D 可视化窗口。您可以停止事件循环以继续执行。"
<< "您可以通过名称访问同一个窗口。您可以运行指定时间段的事件循环。" << endl
<< "使用方法:" << endl
<< "./launching_viz" << endl
<< endl;
}
{
help();
myWindow.spin();
cout << "第一个事件循环结束" << endl;
viz::Viz3d sameWindow = viz::getWindowByName(
"Viz Demo");
cout << "第二个事件循环结束" << endl;
{
}
cout << "最后一个事件循环结束" << endl;
return 0; 0;
}
Viz3d 类表示一个 3D 可视化窗口。此类是隐式共享的。
定义 viz3d.hpp:68
void spinOnce(int time=1, bool force_redraw=false)
启动指定时间的事件循环。
bool wasStopped() const
返回事件循环是否已停止。
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
解释
以下是程序的总体结构:
- 创建窗口。
- 启动事件循环。此事件循环将运行,直到用户按e、E、q、Q键终止。
- 通过名称访问同一个窗口。由于窗口是隐式共享的,sameWindow 与 myWindow 完全相同。如果名称不存在,则会创建一个新窗口。
viz::Viz3d sameWindow = viz::getWindowByName(
"Viz Demo");
- 启动受控事件循环。启动后,wasStopped 设置为 false。在 while 循环内,每次迭代都会调用 spinOnce 以防止事件循环完全停止。在 while 循环内,用户可以执行其他语句,包括与窗口交互的语句。
结果
以下是程序的结果。