Windows Qt C++ VTK 借助msys环境搭建

MSYS2下搭建Qt开发环境 MSYS2环境下搭建Qt开发环境,以及QtCreator安装后不能跳转的问题总计,Qt应用程序打包流程 阅读详情

本示例仅仅是搭建环境,后续使用还得大佬指导。

Qt  6.6.0 MinGW 64bit 

借助msys2 来安装VTK 包,把*.dll 链接进来,就可以用了。

先安装VTK 包。

Package: mingw-w64-x86_64-vtk - MSYS2 Packages

执行 pacman 命令:pacman -S mingw-w64-x86_64-vtk

鉴于csdn下载要C币,把demo例子全贴出来。

*.pro文件:

QT       += core gui
 QT += openglwidgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

INCLUDEPATH += C:/msys64/mingw64/include/vtk
DEPENDPATH  += C:/msys64/mingw64/include/vtk

LIBS += -LC:/msys64/mingw64/bin/ -llibvtkTestingIOSQL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkTestingRendering
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkUtilitiesBenchmarks
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkverdict
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkViewsContext2D
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkViewsCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkViewsInfovis
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkViewsQt
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkvpic
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkWrappingPythonCore3.11
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkWrappingTools
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkxdmf2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkxdmf3
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkxdmfcore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkzfp
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkAcceleratorsVTKmCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkAcceleratorsVTKmDataModel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkAcceleratorsVTKmFilters
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkChartsCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonArchive
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonColor
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonComputationalGeometry
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonDataModel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonExecutionModel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonMath
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonMisc
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonPython
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonSystem
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkCommonTransforms
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkDICOMParser
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkDomainsChemistry
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkDomainsChemistryOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkDomainsMicroscopy
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkexodusII
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkfides
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersAMR
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersCellGrid
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersExtraction
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersFlowPaths
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersGeneral
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersGeneric
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersGeometry
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersGeometryPreview
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersHybrid
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersHyperTree
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersImaging
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersModeling
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersOpenTURNS
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersParallel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersParallelDIY2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersParallelImaging
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersParallelStatistics
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersPoints
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersProgrammable
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersPython
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersReduction
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersReebGraph
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersSelection
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersSMP
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersSources
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersStatistics
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersTensor
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersTexture
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersTopology
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkFiltersVerdict
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkGeovisCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkGeovisGDAL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkGUISupportQt
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkGUISupportQtQuick
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkGUISupportQtSQL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkh5part
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingColor
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingFourier
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingGeneral
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingHybrid
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingMath
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingMorphological
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingSources
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingStatistics
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkImagingStencil
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkInfovisBoostGraphAlgorithms
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkInfovisCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkInfovisLayout
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkInteractionImage
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkInteractionStyle
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkInteractionWidgets
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOADIOS2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOAMR
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOAsynchronous
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOCellGrid
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOCesium3DTiles
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOCGNSReader
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOChemistry
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOCityGML
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOCONVERGECFD
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOEnSight
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOExodus
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOExport
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOExportGL2PS
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOExportPDF
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOFFMPEG
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOFides
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOFLUENTCFF
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOGDAL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOGeoJSON
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOGeometry
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOH5part
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOH5Rage
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOHDF
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOImage
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOImport
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOInfovis
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOIOSS
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOLAS
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOLegacy
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOLSDyna
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOMINC
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOMotionFX
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOMovie
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOMySQL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIONetCDF
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOOCCT
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOODBC
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOOggTheora
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOOMF
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOOpenVDB
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOParallel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOParallelExodus
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOParallelLSDyna
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOParallelXML
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOPDAL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOPIO
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOPLY
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOPostgreSQL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOSegY
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOSQL
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkioss
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOTecplotTable
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOTRUCHAS
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOVeraOut
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOVideo
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOVPIC
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOXdmf2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOXdmf3
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOXML
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkIOXMLParser
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkkissfft
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkloguru
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_cont_testing-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_cont-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_clean_grid-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_connected_components-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_contour-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_core-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_density_estimate-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_entity_extraction-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_field_conversion-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_field_transform-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_flow-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_geometry_refinement-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_image_processing-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_mesh_info-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_multi_block-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_resampling-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_scalar_topology-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_vector_analysis-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_filter_zfp-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_io-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_source-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkm_worklet-2.0
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkmdiympi_nompi
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkmetaio
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkParallelCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkParallelDIY
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkPythonContext2D
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkPythonInterpreter
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingAnnotation
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingCellGrid
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingContext2D
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingContextOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingCore
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingExternal
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingFFMPEGOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingFreeType
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingFreeTypeFontConfig
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingGL2PSOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingHyperTreeGrid
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingImage
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingLabel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingLICOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingLOD
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingMatplotlib
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingOpenVR
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingOpenXR
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingParallel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingQt
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingRayTracing
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingSceneGraph
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingUI
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingVolume
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingVolumeAMR
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingVolumeOpenGL2
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingVR
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkRenderingVtkJS
LIBS += -LC:/msys64/mingw64/bin/ -llibvtksys
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkTestingDataModel
LIBS += -LC:/msys64/mingw64/bin/ -llibvtkTestingGenericBridge


mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>


QT_BEGIN_NAMESPACE
namespace Ui
{
    class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget* parent = nullptr);
    ~MainWindow();

    void test0();
    void test1();

    void test2();

    void test3();

    void test4();
    
    void create();



private:
    Ui::MainWindow* ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include "QVTKOpenGLNativeWidget.h"

#include <vtkSmartPointer.h>
#include <vtkGenericOpenGLRenderWindow.h>

#include <vtkNamedColors.h>

#include <vtkSphereSource.h>

#include <vtkActor.h>

#include <vtkPolyDataMapper.h>

#include <vtkProperty.h>

#include <qsurfaceformat.h>
#include <QVTKOpenGLNativeWidget.h>

#include <vtkSphereSource.h>
#include <vtkCubeSource.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"

#include <QVTKOpenGLNativeWidget.h>
#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkImageCanvasSource2D.h>
#include <vtkImageActor.h>
#include <vtkInteractorStyleImage.h>



#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkAxesActor.h>
#include <vtkPolyData.h>
#include <vtkCellArray.h>
#include <vtkPoints.h>
#include <vtkPolyLine.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>

#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkPointData.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkDataSetMapper.h>
#include <vtkProperty.h>
#include <vtkCubeAxesActor2D.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkInteractorStyleTrackball.h>
#include <vtkSimplePointsReader.h>
#include <vtkWarpScalar.h>
#include <vtkAxisActor2D.h>

#include <vtkOrientationMarkerWidget.h>


MainWindow::MainWindow(QWidget* parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->test4();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::test0()
{
    //初始化VTK窗口,命名为qvtkWidget(原理和QPushButton这种QT自带的控件一样,只是该控件由VTK提供,用法跟QPushButton是一样的)
    QVTKOpenGLNativeWidget* qvtkWidget = new QVTKOpenGLNativeWidget();
    //初始化VTK的渲染器,平时用的比较多是vtkRenderWindow,但是在QT中要改用vtkGenericOpenGLRenderWindow,实质上与vtkRenderWindow功能一致

    vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();


    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
    //QVTKOpenGLNativeWidget* widget = new QVTKOpenGLNativeWidget();

    vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();

    vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();//创建一个球体
    sphereSource->SetRadius(2.0f);


    vtkSmartPointer<vtkCubeSource> cubeSource = vtkSmartPointer<vtkCubeSource>::New();//创建一个立方体
    // cubeSource->SetRadius(2.0f);


    vtkSmartPointer<vtkPolyDataMapper> sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();//球体数据映射到渲染场景中

    // sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
    sphereMapper->SetInputConnection(cubeSource->GetOutputPort());

    vtkSmartPointer<vtkActor> sphereActor = vtkSmartPointer<vtkActor>::New();

    sphereActor->SetMapper(sphereMapper);
    sphereActor->GetProperty()->SetColor(colors->GetColor4d("Red").GetData());

    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(sphereActor);
    renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());

    renderWindow->AddRenderer(renderer);
    renderWindow->SetWindowName("RenderWindowNoUIFile");

    //将渲染器加入到VTK窗口中。可以先写这一行,后续再将准备好的vtkRenderer加入到renderWindow中也是可以同步数据的
    qvtkWidget->setRenderWindow(renderWindow);

    this->setCentralWidget(qvtkWidget);
}

void MainWindow::test1()
{
    QVTKOpenGLNativeWidget* qvtkWidget = new QVTKOpenGLNativeWidget();


    // 创建VTK渲染器和渲染窗口
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);

    // 设置VTK渲染窗口到Qt Widget
    qvtkWidget->setRenderWindow(renderWindow);

    // 创建频谱图数据
    vtkSmartPointer<vtkImageCanvasSource2D> imageSource = vtkSmartPointer<vtkImageCanvasSource2D>::New();
    imageSource->SetScalarTypeToUnsignedChar();
    imageSource->SetNumberOfScalarComponents(3);
    imageSource->SetExtent(0, 100, 0, 100, 0, 100);
    imageSource->SetDrawColor(255, 0, 0);  // 设置颜色为红色
    imageSource->FillBox(0, 100, 0, 100);

    // 创建频谱图演员
    vtkSmartPointer<vtkImageActor> imageActor = vtkSmartPointer<vtkImageActor>::New();
    imageActor->SetInputData(imageSource->GetOutput());

    // 添加演员到渲染器
    renderer->AddActor(imageActor);
    renderer->ResetCamera();

    // 创建VTK交互器
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);

    // 设置VTK交互器样式
    vtkSmartPointer<vtkInteractorStyleImage> interactorStyle = vtkSmartPointer<vtkInteractorStyleImage>::New();
    renderWindowInteractor->SetInteractorStyle(interactorStyle);

    renderWindowInteractor->Start();

    qvtkWidget->show();
}

void MainWindow::test2()
{
    QVTKOpenGLNativeWidget* qvtkWidget = new QVTKOpenGLNativeWidget();

    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
    points->InsertNextPoint(0.0, 0.0, 0.0);
    points->InsertNextPoint(1.0, 1.0, 1.0);
    points->InsertNextPoint(3.0, 2.0, 2.0);
    points->InsertNextPoint(4.0, 2.0, 2.0);
    points->InsertNextPoint(6.0, 2.0, 7.0);

    vtkSmartPointer<vtkCellArray> vertices = vtkSmartPointer<vtkCellArray>::New();
    for (vtkIdType i = 0; i < points->GetNumberOfPoints(); i++)
    {
        vertices->InsertNextCell(1);
        vertices->InsertCellPoint(i);
    }

    vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
    polydata->SetPoints(points);
    polydata->SetVerts(vertices);

    vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputData(polydata);

    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);

    vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();


    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(actor);

    renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());


    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);

    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);

    renderWindow->Render();
    renderWindowInteractor->Start();

    qvtkWidget->setRenderWindow(renderWindow);

    this->setCentralWidget(qvtkWidget);
}

void MainWindow::test3()
{
    // Read the file
    vtkSmartPointer<vtkSimplePointsReader> reader = vtkSmartPointer<vtkSimplePointsReader>::New();
    reader->SetFileName ( "d://simple.xyz" );
    reader->Update();

    vtkSmartPointer<vtkPolyData> inputPolyData = vtkSmartPointer<vtkPolyData>::New();
    inputPolyData ->CopyStructure(reader->GetOutput());


    // warp plane
    vtkSmartPointer<vtkWarpScalar> warp = vtkSmartPointer<vtkWarpScalar>::New();
    warp->SetInputData(inputPolyData);
    // warp->SetInput(inputPolyData);
    warp->SetScaleFactor(0.0);

    // Visualize
    vtkSmartPointer<vtkDataSetMapper> mapper = vtkSmartPointer<vtkDataSetMapper>::New();
    mapper->SetInputConnection(warp->GetOutputPort());



    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
    actor->GetProperty()->SetPointSize(4);
    actor->SetMapper(mapper);

    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);

    renderer->AddActor(actor);
    renderer->SetBackground(.3, .6, .3);
    renderWindow->Render();

    vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
    renderWindowInteractor->SetInteractorStyle(style);

    // add & render CubeAxes
    vtkSmartPointer<vtkCubeAxesActor2D> axes = vtkSmartPointer<vtkCubeAxesActor2D>::New();
    axes->SetInputData(warp->GetOutput());
    axes->SetFontFactor(3.0);
    axes->SetFlyModeToNone();
    axes->SetCamera(renderer->GetActiveCamera());


    vtkSmartPointer<vtkAxisActor2D> xAxis = axes->GetXAxisActor2D();
    xAxis->SetAdjustLabels(1);

    // 添加坐标轴
    vtkSmartPointer<vtkAxesActor> axesActor = vtkSmartPointer<vtkAxesActor>::New();
    vtkSmartPointer<vtkOrientationMarkerWidget> widget = vtkSmartPointer<vtkOrientationMarkerWidget>::New();
    widget->SetOutlineColor(0.9300, 0.5700, 0.1300);
    widget->SetOrientationMarker(axesActor);
    widget->SetInteractor(renderWindowInteractor);
    widget->SetViewport(0.0, 0.0, 0.2, 0.2);
    widget->SetEnabled(1);
    widget->InteractiveOn();

    renderer->AddViewProp(axes);
    renderWindowInteractor->Start();
}

void MainWindow::test4()
{
    // 创建读取器
    vtkSmartPointer<vtkSimplePointsReader> reader = vtkSmartPointer<vtkSimplePointsReader>::New();
    reader->SetFileName("points.txt"); // 替换为你的数据文件路径

    // 创建映射器和演员
    vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(reader->GetOutputPort());

    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);

    // 创建渲染器和渲染窗口
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);

    // 创建交互器
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);

    // 将演员添加到渲染器中
    renderer->AddActor(actor);

    // 设置渲染器和窗口属性
    renderer->SetBackground(1.0, 1.0, 1.0); // 设置背景颜色为白色
    renderWindow->SetSize(800, 600);

    // 重置相机以适应数据范围
    renderer->ResetCamera();

    // 绘制曲线
    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
    points->InsertNextPoint(0.0, 0.0, 0.0);
    points->InsertNextPoint(1.0, 1.0, 0.0);
    points->InsertNextPoint(2.0, 0.0, 0.0);

    vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();
    vtkSmartPointer<vtkPolyLine> line = vtkSmartPointer<vtkPolyLine>::New();
    line->GetPointIds()->SetNumberOfIds(3);
    for (int i = 0; i < 3; ++i)
    {
        line->GetPointIds()->SetId(i, i);
    }
    lines->InsertNextCell(line);

    vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
    polydata->SetPoints(points);
    polydata->SetLines(lines);

    vtkSmartPointer<vtkPolyDataMapper> curveMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    curveMapper->SetInputData(polydata);

    vtkSmartPointer<vtkActor> curveActor = vtkSmartPointer<vtkActor>::New();
    curveActor->SetMapper(curveMapper);
    curveActor->GetProperty()->SetColor(1.0, 0.0, 0.0); // 设置曲线颜色为红色

    renderer->AddActor(curveActor);

    // 添加坐标轴
    vtkSmartPointer<vtkAxesActor> axesActor = vtkSmartPointer<vtkAxesActor>::New();
    vtkSmartPointer<vtkOrientationMarkerWidget> widget = vtkSmartPointer<vtkOrientationMarkerWidget>::New();
    widget->SetOutlineColor(0.9300, 0.5700, 0.1300);
    widget->SetOrientationMarker(axesActor);
    widget->SetInteractor(renderWindowInteractor);
    widget->SetViewport(0.0, 0.0, 0.2, 0.2);
    widget->SetEnabled(1);
    widget->InteractiveOn();

    // 开始渲染
    renderWindow->Render();

    // 启动交互
    renderWindowInteractor->Start();
}

void MainWindow::create()
{
    //存放三角网的顶点
    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
    //存放Cell顶点
    vtkSmartPointer<vtkCellArray> strips = vtkSmartPointer<vtkCellArray>::New();
    //存放每个顶点的标量值
    vtkSmartPointer<vtkFloatArray> scalars = vtkSmartPointer<vtkFloatArray>::New();
    //
    vtkSmartPointer<vtkPolyData> PolyData = vtkSmartPointer<vtkPolyData>::New();
    vtkSmartPointer<vtkPolyDataMapper> PolyDataMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    vtkSmartPointer<vtkLODActor> Actor = vtkSmartPointer<vtkLODActor>::New();
    //定义用于将属性映射到RGB颜色值的传递函数
    vtkSmartPointer<vtkColorTransferFunction> clrTransferFunc = vtkSmartPointer<vtkColorTransferFunction>::New();
    clrTransferFunc->SetColorSpaceToRGB();
    //获取三角网的(序号,顶点坐标)
    std::vector<SurfaceDataReader::SeqPoint> pts = m_sfReader->getTrianglePtLst();
    //获取三角网所有顶点的序号
    std::vector<int> topIdLst = m_sfReader->getTopIdLst();
    //将顶点坐标加入points、z值作为标量加入scalars
    TGS::Point3D pt;
    for (int index = 0; index < pts.size(); ++index)
    {
        pt = pts[index].second;
        scalars->InsertValue(pts[index].first, pt.z);
        points->InsertPoint(pts[index].first, pt.x, pt.y, pt.z);
    }
    //遍历所有序号,按每3个序号组合成一个cell
    for (int i = 0; i < topIdLst.size(); i += 3)
    {
        strips->InsertNextCell(3);
        strips->InsertCellPoint(topIdLst[i]);
        strips->InsertCellPoint(topIdLst[i + 1]);
        strips->InsertCellPoint(topIdLst[i + 2]);
    }
    PolyData->SetPoints(points);
    PolyData->SetStrips(strips);
    PolyData->GetPointData()->SetScalars(scalars);
    //计算三角网格顶点的法向量,平滑过渡颜色
    vtkSmartPointer<vtkPolyDataNormals> normFilter = vtkSmartPointer<vtkPolyDataNormals>::New();
    normFilter->SetInputData(PolyData);
    //开启点法向量计算
    normFilter->SetComputePointNormals(1);
    //关闭单元法向量计算
    normFilter->SetComputeCellNormals(0);
    normFilter->SetAutoOrientNormals(1);
    normFilter->SetSplitting(0);
    normFilter->Update();
    //获取色标信息
    std::vector<ColorBar::ColorInfo> clrs = m_clrBar->getColorBar();
    double dRange = m_zMax - m_zMin;
    double dValue = 0.0;
    for (int i = 0; i < clrs.size(); i++)
    {
        dValue = m_zMin + dRange * clrs[i].m_percent;
        unsigned int a, r, g, b;
        m_clrBar->convertColorToArgb(clrs[i].m_color, a, r, g, b);
        clrTransferFunc->AddRGBPoint(dValue, r / 255.0, g / 255.0, b / 255.0);
    }
    clrTransferFunc->Build();
    //
    PolyDataMapper->SetInputData(normFilter->GetOutput());
    PolyDataMapper->SetScalarRange(m_zMin, m_zMax);
    PolyDataMapper->SetLookupTable(clrTransferFunc);
    PolyDataMapper->ScalarVisibilityOn();
    Actor->SetMapper(PolyDataMapper);
    double* scale = m_vtkView->zoomScale();
    Actor->SetScale(scale[0], scale[1], scale[2]);
    m_pRender->AddActor(Actor);
    //
    m_pCtLine->initRender();
    m_pCtLine->create();

}

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

simple.xyz;

0.0 0.0 3.0
1.0 4.0 0.0
0.0 1.0 0.0
4.0 0.0 3.0
1.0 4.0 7.0
0.0 6.0 0.0

借鉴了:

c++ - 使用VTK的3D等高线图C ++示例? - Thinbug

https://zhaojichao.blog.youkuaiyun.com/article/details/131714961?spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-14-131714961-blog-123477490.235%5Ev40%5Epc_relevant_rights_sort&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-14-131714961-blog-123477490.235%5Ev40%5Epc_relevant_rights_sort&utm_relevant_index=21

Windows版本openGL开发环境搭建 2.解压glad.zip文件,最终需要src/glad.c文件和glad/glad.h与KHR/khrplatform.h三个文件;2. 将以上得到的glad、GLFW、KHR、glad.c、libglfw3.a文件和文件夹复制到vscode相应目录;#4.设置的c++编译器版本是必须的,如果不设置,或者为OFF,则指定版本不可用时,会使用上一版本。2. cmake 官网提供源码和二进制版本,源码解压就能用无需安装;1. vscode 官网下载自行安装,可参考官方文档或别人的博客; 阅读详情

相关推荐

QT和VTK的结合开发:可视化应用的强大组合

VTK提供了丰富的算法和工具,用于处理和可视化科学数据,如体数据、网格数据等。QT提供了丰富的工具和组件,用于构建用户界面,而VTK提供了丰富的算法和工具,用于处理和可视化科学数据。QT是一个跨平台的C++应用程序开发框架,它提供了丰富的工具和组件,用于开发各种类型的应用程序,包括图形用户界面(GUI)应用程序。通过结合使用QT和VTK,开发人员可以利用QT的丰富功能和用户界面控件,以及VTK强大的数据处理和可视化能力,创建出交互性和可视化效果都很好的应用程序。三、QT和VTK的结合。

CnyhCode的博客 3062

C++ VTK三维图像体积计算Qt

这篇博客针对《C++ VTK三维图像体积计算Qt》编写代码,代码整洁,规则,易读。 学习与应用推荐首选

alicema1111的博客 520

使用VTK库在C/C++中处理图像网格

它提供了丰富的功能,其中包括处理图像网格的能力。在本篇文章中,我们将介绍如何在C/C++中使用VTK库来处理图像网格。上述示例仅展示了使用VTK库读取和显示图像网格的基本过程。通过使用VTK的丰富功能和灵活性,您可以进行更高级的图像处理和可视化操作。如果您对VTK的其他功能和用法感兴趣,请参阅VTK的官方文档和示例代码。以下是一个简单的示例,演示了如何使用VTK库来读取图像文件并显示图像网格。在上面的示例中,我们首先包含了一些必要的VTK头文件。函数,我们设置要读取的图像文件名。函数获取读取的图像数据。

HackVibe的博客 322

QT C++ vtk 加载二维dicom 三维渲染 3DMPR

vtk 容积协议 效果 ;QT VTK dicomtk 3DMPR 等

2404

QT实现vtk的可视化

QT是一个跨平台的C++图形用户界面开发框架,而VTK是Visualization Toolkit的缩写,它是一个用于3D可视化和图形处理的强大工具。在上面的示例中,我们创建了一个主窗口,并在其中嵌入了一个QVTKOpenGLNativeWidget,用于承载VTK渲染器。我们还创建了一个VTK渲染器和一个VTK交互器,并将它们与VTK渲染窗口关联。确保你已经安装了QT和VTK,并且可以在你的C++项目中使用它们。这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。如果你还有其他问题,请随时提问。

WbhsOcaml的博客 608

QT6与PCL1.13环境搭建:ABI兼容性与预编译包精准选择指南

Qt6与PCL(Point Cloud Library)是点云可视化开发的核心技术栈,但二者深度集成面临ABI不兼容、依赖版本锁死、CMake构建链断裂等系统性挑战。其本质源于Qt6的ABI重构与PCL1.13对VTK、Boost、FLANN等底层库的强耦合约束。技术价值在于规避手动编译地狱,实现开箱即用的稳定可视化能力;典型应用场景包括自动驾驶感知调试、工业三维检测GUI、机器人SLAM实时点云渲染等。本文聚焦QT6与PCL1.13协同部署的关键路径——从Qt6 ABI指纹识别、PCL预编译二进制包三重验

weixin_34090562的博客 316

qt为什么转向用cmake放弃qmake

Qt从qmake转向CMake是其构建系统的重大转型,Qt6全面采用CMake。CMake优势包括:强大的跨平台支持、无缝集成第三方库、符合现代C++标准、完整的开发生命周期支持以及更好的模块化管理。Qt放弃qmake因其局限性,自研的qbs也因生态问题失败。CMake已成为C++构建的事实标准,被主流IDE广泛支持。开发者应优先选择CMake构建新项目,旧项目可逐步迁移。Qt这一转型降低维护成本,拥抱开源生态,为开发者提供更强大、标准的构建体验。

m0_73482095的博客 1004

C++ Qt/VTK装配体组成联动连接杆

效果

windSnowLi 544

解决PCL与C++17编译冲突:CMake配置与ABI兼容性实战指南

在C++项目开发中,编译标准冲突是常见的构建问题,尤其在集成大型第三方库时。其核心原理在于CMake构建系统的属性传播机制和ABI(应用程序二进制接口)兼容性。当项目使用较新的C++标准(如C++17),而依赖库(如点云处理库PCL)以旧标准编译时,链接阶段可能出现符号解析失败或运行时崩溃。从技术价值看,统一编译标准能确保二进制兼容性,提升项目稳定性和跨平台部署能力。在点云处理、计算机视觉等工程实践中,开发者常需集成PCL这类历史悠久的库,此时理解CMake的目标属性管理和标准传递机制至关重要。本文聚焦PC

weixin_30719711的博客 442

MinGW下使用的VTK库

使用CMake编译的VTK5.10.0,可在MinGW编译器下使用,非常的方便

pgpool-II踩坑日记两则

最近结合pgpool-II进行postgreSQL高可用的部署,过程非常煎熬,作为新手,公司也没有前辈熟悉postgreSQL,只能自己摸索。好在已经搞明白了,把困扰我很长时间的两个问题分享一下。 1. show pool_nodes 第一个问题就是 show pool_nodes 的使用,照着教程建好后,在哪里执行这个指令呢?我在pg服务器上怎么执行这个指令都显示 ERROR: unrecognized configuration parameter "pool_nodes",一度怀疑人生。翻阅了很多资料

zhaizhai6_6的博客 4540

CMake with Win&MinGW

  今天一个下午都在做一件简直耻辱play的事情,论文没看,程序没写,玩了一个下午的编译器。。。心塞(逃。。。   言归正传,今天要讲在windows下,使用Cmake和MInGW.  1.g++   MinGW的安装需要首先下载安装器。   然后将安装目录设置成环境变量,以便于cmd在任何目录下都能调用里面的程序。   在安装完成后,在cmd中依次执行: mingw-get inst...

weixin_34034261的博客 119

YOLOv8模型RKNN量化策略与RK3588部署实战解析

本文详细解析了YOLOv8模型在RK3588平台上的RKNN量化策略与部署实践。通过对比INT8和FP16量化方式的性能差异,结合实际测试数据,为开发者提供了从模型导出、转换到板端部署的完整解决方案,帮助实现高效的边缘AI应用部署。

oil88的博客 1078

msys2 + mingw使用cmake配置openGL工程提示__ms_vsnprintf未定义

GLEW官网下载的wingw64编译的glfw windows开发库,导入自己工程报错信息如下,简单分析是链接libglfw3.a时,libglfw3依赖了其他静态库,报错信息见文件尾 方案一:使用动态链接库 动态库和静态库同时存在时,优先链接了静态库,将静态库libglfw3.a删除或移出工程配置路径,便会链接动态库 方案二:使用独立的mingw进行编译 我的官网下载的开发库是使用独立的mingw进行编译的,由于安装独立的mingw需要翻墙,所以我选择了msys2,ms...

mvp_Dawn的博客 1757

树莓派c语言串口通讯程序

在网上搜了很多关于树莓派串口通讯的例子,但是都是用python写的,虽然python很有名,而且最近也在学习这门语言, 但是还是想用c语言实现一下,因为需要用到整套系统里,其他内容都是用c语言写的。但是网上没有找打现成的。 还好,之前做过天嵌2440开发板的串口程序(参照天嵌工程师提供的代码),发现串口程序其实是通用的, 驱动层屏蔽了硬件细节,个人猜测,几乎所有移植好的系统的串口,都可以用一

realank的专栏 1万+

使用electron静默打印

使用electron静默打印 1.使用electron打印的理由 很多情况下程序中使用的打印都是用户无感知的。并且想要灵活的控制打印内容,往往需要借助打印机给我们提供的api再进行开发,这种开发方式非常繁琐,并且开发难度较大。 electron提供的打印api可以非常灵活的控制打印设置的显示,并且可以通过html来书写打印内容。 2.api ele...

w1366352655的博客 944

(41)VTK C++开发示例 ---qt使用vtk最小示例

本文演示了在Qt中使用VTK的最小示例程序,使用VTK创建显示一个锥体;

mahuifa的博客 1855

STM32H7 FMC驱动TFT-LCD原理与实战

TFT-LCD并行接口驱动是嵌入式人机交互的基础技术,其核心在于将显示控制器抽象为存储器映射设备,依托硬件时序控制器实现低开销、高确定性刷新。FMC(Flexible Memory Controller)作为STM32H7系列的关键外设,通过地址/数据总线复用、可配置读写时序及Bank分区机制,支持将ILI9341、ST7789等主流LCD控制器挂载为‘慢速异步存储器’,从而替代GPIO模拟8080时序或LTDC+DMA2D方案。该技术显著降低CPU占用率,提升帧率稳定性,适用于工业HMI、实时仪表盘等对响

weixin_32306683的博客 547

【C++】将Qt界面显示到VTK三维环境中

开发环境:win10,vs2017,VTK 8.2.0,Qt 5.11.0 项目的需求是在三维环境下实现UI,目前实现的效果如下: 左边是我的Qt窗口在界面设计器中的预览,右边是VTK三维环境下界面的显示。 (为了体现三维环境,我在右下角加了一个圆柱) 读到这里,首先你应该具备以下能力才能进行之后的步骤: 1.能将VTK和Qt编译到同一个目录下; 2.熟悉Qt和vt...

愿岁并谢,与长友兮 2790

HALCON 20.11实战:5步搞定工业图像异常检测(附完整代码)

本文提供了一份基于HALCON 20.11的工业图像异常检测实战指南。通过五个核心步骤——环境准备、数据预处理、模型训练、推理解析与工程化部署,详细演示了如何利用深度学习技术,仅使用正常样本快速构建并优化金属表面划痕等缺陷的检测模型,并附有完整可运行的HDevelop代码,助力工程师实现高效、智能的工业视觉质检。

weixin_29243279的博客 139

SurfaceControlViewHost使用介绍

可以看到,主要用途:是把一个进程的View显示到另外一个进程里面。

chadm.xiang 1283

Qt+VTK封装

VTK+Qt点云渲染

dyk4ever的博客 459

2025年华为杯中国研究生数学建模竞赛A题 通用神经网络处理器下的核内调度问题 思路+代码

针对通用神经网络处理器下的核内调度问题,我们提出了一套基于分层优化框架的系统性解决方案。该方案首先通过缓存敏感的启发式拓扑排序算法生成最小峰值缓存占用的调度序列,在满足计算图依赖关系的前提下优先选择能够释放或减少缓存占用的节点;随后采用最佳适应算法进行精细化的缓存分配,结合LRU换出策略动态管理多级缓存空间,最小化额外数据搬运量;最后引入多目标遗传算法进行联合优化,在严格控制数据搬运量不显著增加的前提下,通过关键路径分析、流水线并行和数据预取等技术进一步优化总执行时间。

YOLO 784

五、在Qt下加载QVTKWidget控件(VTK8.2.0),生成Visual Studio项目,显示点云(C++)

Cmake编译VTK8.2.0源码,在Qt中添加QVTKWidger控件进行显示

beyond谚语的博客 7210

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

win使用MSYS2安装Qt开发环境

win使用MSYS2安装Qt开发环境原文链接MSYS2 下载地址:

marlin_one的博客 3773

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VTK+Qt+Cmake+VS的环境搭建

本文的主要内容:简单介绍如何使用Cmake编译安装VTK源代码;如何配置VTK在Qt中的使用环境;如何以VS作为IDE在C++下使用Qt+VTK。哪些人适合阅读本文:有一定Cmake、Qt和VS的基础,但是初次使用VTK的人。

行者无疆的博客 2395
上一篇: Qt C++ chartdir学习 demo
下一篇: Qt QCustomPlot 绘制子轴
QQ_278397935
博客等级 码龄18年 0粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值