知識不是單獨的,一定是成體系的。更多我的個人總結(jié)和相關(guān)經(jīng)驗可查閱這個專欄:Visual Studio。
編號 | 內(nèi)容 |
---|---|
1 | 【Visual Studio】在 Windows 上使用 Visual Studio 構(gòu)建 VTK |
2 | 【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK |
3 | 【VTK】VTK 顯示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK |
4 | 【VTK】官方示例,移植到自己的 Qt 工程,含代碼 |
關(guān)于更多此例子的資料,可以參考:【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK。
完成了使用 Qt 來顯示一個小球的例子后,我還嘗試從 VTK 官網(wǎng)上下載了一個例子,然后自己嘗試著將其移植到了自己的 Qt 工程中,感興趣可以看:【VTK】官方示例,移植到自己的 Qt 工程,含代碼。
版本環(huán)境
版本環(huán)境為:
- win11
- visual studio 2022
- VTK-9.2.6
- CMake 3.26.3
- Qt 6.2.8
VTKTest.ui
文章來源:http://www.zghlxwxcb.cn/news/detail-582301.html
VTKTest.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_VTKTest.h"
#include <qsurfaceformat.h>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>
#include "vtkAutoInit.h"
class VTKTest : public QMainWindow
{
Q_OBJECT
public:
VTKTest(QWidget* parent = nullptr);
//VTKTest(QWidget* parent = Q_NULLPTR);
~VTKTest();
private slots:
void on_pushButton_clicked();
private:
Ui::VTKTestClass ui;
};
VTKTest.cpp
#include "VTKTest.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTKTest::VTKTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
VTKTest::~VTKTest()
{}
void VTKTest::on_pushButton_clicked()
{
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
//QVTKOpenGLNativeWidget* widget = new QVTKOpenGLNativeWidget();
vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();
vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
vtkSmartPointer<vtkPolyDataMapper> sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
vtkSmartPointer<vtkActor> sphereActor = vtkSmartPointer<vtkActor>::New();
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("RenderWindowNoUIFile");
ui.qvtkWidget->setRenderWindow(renderWindow);
ui.qvtkWidget->resize(200, 160);
ui.qvtkWidget->show();
}
main.cpp
#include "VTKTest.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
VTKTest w;
w.show();
return a.exec();
}
運行結(jié)果
文章來源地址http://www.zghlxwxcb.cn/news/detail-582301.html
Ref.
- QVTKOpenGLNativeWidget在Qt中的用法
- VTK+Qt的第一個例子
- C++ 泛型編程
- C++ 模板
- C語言帶參數(shù)的宏定義
到了這里,關(guān)于【VTK】VTK 顯示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!