Vega Prime入门教程索引:Vega Prime入门教程索引
在Qt框架显示视景
架构
既然是在Qt框架中显示视景,那么就需要QWidget来显示画面。
从Vega Prime入门教程12.02:基本开发流程中,我们可以看到,VP需要有一个死循环不断运行,那么就需要一个QThread来保持VP不断运行。
两者之间使用信号槽关联。
Qt工程
新建一个Qt MainWindow工程,在pro文件中添加头文件位置和静态库位置
1 2 3 4 5 6
| INCLUDEPATH += C:\Presagis\Suite22\Vega_Prime_22_0\include\vsg \ C:\Presagis\Suite22\Vega_Prime_22_0\include\vegaprime
LIBS += -LC:\Presagis\Suite22\Vega_Prime_22_0\lib \ vsgu22_0D.lib vp22_0D.lib vsgr22_0D.lib vsgs22_0D.lib \ vuMemoryProfiler22_0D.lib
|
QVPWindow
一方面要在QWidget里面获取winid,另一方面要把QWidget的缩放、关闭信号发送给独立线程。
QVPThread
独立线程需要不断运行,最重要的就是把QWidget发送过来的winid设置给VP,这样VP就会在QWidget上面渲染视景。
1 2 3 4
| vpWindow *vpWin = *vpWindow::begin(); vpWin->setParent((HWND)m_Winid); vpWin->setBorderEnable(false); vpWin->setFullScreenEnable(true);
|
死循环部分和之前一样。
main
在QVPWindow类中需要获取窗口的id,那么肯定是窗口创建后才会有id,所以线程的创建要在窗口创建之后,然后把信号槽关联。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| int main(int argc, char *argv[]) { QApplication a(argc, argv); QVPWindow w; w.show();
QVPThread vpclassobj;
vpclassobj.SetVPWinParent(w.GetWinID()); QObject::connect(&w,&QVPWindow::readyStop,&vpclassobj,&QVPThread::stop); QObject::connect(&w,&QVPWindow::sigResize,&vpclassobj,&QVPThread::resizevpwin);
vpclassobj.start();
return a.exec(); }
|
测试
编译运行程序,先显示空白界面
VP需要检测证书,加载插件,然后显示视景
演示