VTK9 QT5 之 RenderWindowUIMultipleInheritance

   日期:2020-12-21     浏览:131    评论:0    
核心提示:使用多重继代码RenderWindowUIMultipleInheritance.cxxRenderWindowUIMultipleInheritance.hRenderWindowUIMultipleInheritance.uiRenderWindowUIMultipleInheritanceDriver.cxx运行代码总结代码RenderWindowUIMultipleInheritance.cxx#include "RenderWindowUIMultipleInheritance.h"#i

使用多重继

  • 代码
    • RenderWindowUIMultipleInheritance.cxx
    • RenderWindowUIMultipleInheritance.h
    • RenderWindowUIMultipleInheritance.ui
    • RenderWindowUIMultipleInheritanceDriver.cxx
  • 运行代码
  • 总结

代码

RenderWindowUIMultipleInheritance.cxx

#include "RenderWindowUIMultipleInheritance.h"

#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>

#if VTK_VERSION_NUMBER >= 89000000000ULL
#define VTK890 1
#endif

// Constructor
RenderWindowUIMultipleInheritance::RenderWindowUIMultipleInheritance()
{ 
  this->setupUi(this);

  vtkNew<vtkNamedColors> colors;

  vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
#if VTK890
  qvtkWidget->setRenderWindow(renderWindow);
#else
  qvtkWidget->SetRenderWindow(renderWindow);
#endif

  // Sphere
  auto sphereSource = vtkSmartPointer<vtkSphereSource>::New();
  sphereSource->Update();
  auto sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
  sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
  auto sphereActor = vtkSmartPointer<vtkActor>::New();
  sphereActor->SetMapper(sphereMapper);
  sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());

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

  // VTK/Qt wedded
#if VTK890
  this->qvtkWidget->renderWindow()->AddRenderer(renderer);
  this->qvtkWidget->renderWindow()->SetWindowName(
      "RenderWindowUIMultipleInheritance");
#else
  this->qvtkWidget->GetRenderWindow()->AddRenderer(renderer);
  this->qvtkWidget->GetRenderWindow()->SetWindowName(
      "RenderWindowUIMultipleInheritance");
#endif

  // Set up action signals and slots
  connect(this->actionExit, SIGNAL(triggered()), this, SLOT(slotExit()));
};

void RenderWindowUIMultipleInheritance::slotExit()
{ 
  qApp->exit();
}

RenderWindowUIMultipleInheritance.h

#ifndef RenderWindowUIMultipleInheritance_H
#define RenderWindowUIMultipleInheritance_H

#include "ui_RenderWindowUIMultipleInheritance.h"

#include <QMainWindow>

class RenderWindowUIMultipleInheritance
  : public QMainWindow,
    private Ui::RenderWindowUIMultipleInheritance
{ 
  Q_OBJECT
public:
  RenderWindowUIMultipleInheritance();

public slots:

  void slotExit();
};

#endif

RenderWindowUIMultipleInheritance.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>RenderWindowUIMultipleInheritance</class>
 <widget class="QMainWindow" name="RenderWindowUIMultipleInheritance">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>541</width>
    <height>583</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>RenderWindowUIMultipleInheritance</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QVTKOpenGLNativeWidget" name="qvtkWidget">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>20</y>
      <width>511</width>
      <height>541</height>
     </rect>
    </property>
   </widget>
  </widget>
  <action name="actionOpenFile">
   <property name="enabled">
    <bool>true</bool>
   </property>
   <property name="text">
    <string>Open File...</string>
   </property>
  </action>
  <action name="actionExit">
   <property name="text">
    <string>Exit</string>
   </property>
  </action>
  <action name="actionPrint">
   <property name="text">
    <string>Print</string>
   </property>
  </action>
  <action name="actionHelp">
   <property name="text">
    <string>Help</string>
   </property>
  </action>
  <action name="actionSave">
   <property name="text">
    <string>Save</string>
   </property>
  </action>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QVTKOpenGLNativeWidget</class>
   <extends>QWidget</extends>
   <header>QVTKOpenGLNativeWidget.h</header>
  </customwidget>
 </customwidgets>
 <resources>

 </resources>
 <connections/>
</ui>

RenderWindowUIMultipleInheritanceDriver.cxx

#include <QApplication>
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>

#include "RenderWindowUIMultipleInheritance.h"

int main(int argc, char** argv)
{ 
  // needed to ensure appropriate OpenGL context is created for VTK rendering.
  QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());

  QApplication app(argc, argv);

  RenderWindowUIMultipleInheritance renderWindowUIMultipleInheritance;
  renderWindowUIMultipleInheritance.show();

  return app.exec();
}

运行代码

总结

多谢,亲爱的美美。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服