Vega Prime入门教程15.07:Qt开发框架中显示视景

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需要检测证书,加载插件,然后显示视景

效果

演示


Vega Prime入门教程15.07:Qt开发框架中显示视景
https://feater.top/vegaprime/display-within-qwidget/
作者
JackeyLea
发布于
2023年11月24日
许可协议