下一教程: 小部件姿态
目标
在本教程中,您将学习如何
- 打开可视化窗口。
- 通过其名称访问某个窗口。
- 启动事件循环。
- 在指定的时间内启动事件循环。
代码
您可从 此处 下载代码。
#include <iostream>
static void help()
{
cout
<< "--------------------------------------------------------------------------" << endl
<< "该程序展示了如何启动一个 3D 可视化窗口。您可以在事件循环继续执行前停止它。 "
<< "您可以通过窗口名称来访问同一窗口。您可以在指定时间段内运行事件循环。 " << endl
<< "用法:" << endl
<< "./launching_viz" << endl
<< endl;
}
{
help();
myWindow.spin();
cout << "第一个事件循环已结束" << endl;
viz::Viz3d sameWindow = viz::getWindowByName(
"可视化演示");
cout << "第二个事件循环已结束" << endl;
{
}
cout << "最后一个事件循环已结束" << endl;
return 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
与磁盘上的文件关联的文件存储的“黑匣子”表示形式。
定义 core.hpp:102
说明
以下为该程序的一般结构
- 创建一个窗口。
- 启动事件循环。此事件循环将在用户按 e、E、q、Q 退出之前一直运行。
- 通过其名称访问同一个窗口。由于窗口都隐式共享,因此 sameWindow 与 myWindow 完全相同。如果此名称不存在,则创建一个新窗口。
viz::Viz3d sameWindow = viz::getWindowByName(
"可视化演示");
- 启动受控事件循环。一旦启动,wasStopped 将设为 false。在 while 循环中,每次迭代中都会调用 spinOnce 以防止事件循环完全停止。在 while 循环中,用户可以执行其他语句,包括与窗口进行交互的语句。
结果
以下是该程序的结果。