当前位置: 首页 > news >正文

Open3D C++系列教程 (七)继承窗口类

Open3D C++系列教程 (七)继承窗口类

前置:
Open3D C++系列教程 (一)环境搭建
Open3D C++系列教程 (二)第一个GUI窗口
Open3D C++系列教程 (三)关于程序异常退出的探讨
Open3D C++系列教程 (四)动画 Tick事件
Open3D C++系列教程 (五)创建菜单栏
Open3D C++系列教程 (六)菜单栏-文件拾取


在之前的几节中介绍了直接在main中使用gui::Windowgui::SceneWidget创建窗口,这在一些简单的应用中是足够的。但如果需要自定义布局,或者添加键盘、鼠标的一些功能,上面的方法就无法做到。

因此接下来会慢慢介绍继承Window、继承SceneWidget等内容,从而能够创建更为复杂的窗口应用。

本节将会重新组织项目代码,并以继承Window的方式重现之前的窗口及功能,以方便之后的讨论。

文章目录

  • Open3D C++系列教程 (七)继承窗口类
    • 1. 项目结构及CMakeLists
    • 2. 辅助函数
    • 3. 继承窗口类
    • 4. Application类
    • 5. main()函数
    • 6. 运行结果
    • 7. 完整代码下载

1. 项目结构及CMakeLists

在这里我们将与窗口相关的代码放在window.hwindow.cpp中,将辅助函数放在utility.hutility.cpp中,组成下面的项目结构:

exp07
 ├── CMakeLists.txt
 ├── main.cpp
 ├── utility.cpp
 ├── utility.h
 ├── window.cpp
 └── window.h

调整CMakeLists.txt文件,将新增的.h.cpp添加到项目中:

// CMakeLists.txt
...
add_executable(main main.cpp window.h window.cpp utility.h utility.cpp)
...

2. 辅助函数

将辅助函数全部放到utility.hutility.cpp中。

// utility.h

// 获取rgb颜色
Eigen::Vector3d rgb(int r, int g, int b);
Eigen::Vector3d RandomColor();

// 获取程序运行目录
std::filesystem::path GetProgramDirPath();

3. 继承窗口类

首先我们继承一个窗口,并在窗口中添加一个场景控件(gui::SceneWidget):

// window.h
class MyWindow : public gui::Window
{
   
public:
    std::shared_ptr<gui::SceneWidget> main_scene_;

public:
    explicit MyWindow(const std::string &title, int width, int height);

    // Layout
    void Layout(const gui::LayoutContext &context

相关文章:

  • 什么是 大语言模型中Kernel优化
  • 【第5章:深度生成模型— 5.1 变分自编码器(VAE)与生成对抗网络(GAN)的基础理论】
  • 【做一个微信小程序】校园地图页面实现
  • 代码随想录DAY31|56. 合并区间、738.单调递增的数字、968.监控二叉树
  • springboot020基于Java的免税商品优选购物商城
  • Sam Altman 揭秘 OpenAI 未来蓝图:GPT-4.5、GPT-5 与模型规范重大更新
  • 鸿蒙app开发中 tab 切换的时候 里面的子组件如何在页面出现的时候 就请求数据
  • 2025年2月14日笔记 3
  • git如何下载指定版本
  • 二、交换机的vlan子设备接入
  • C语言进阶习题(4结构体)【1】通讯录的实现
  • 洛谷 acwing刷题 有关图的存储形式和djstra算法的例题
  • IDEA常用快捷键
  • 微信小程序的制作
  • 细读 React | React Router 路由切换原理
  • 深度卷积神经网络实战海洋动物图像识别
  • 数据科学之数据管理|python for Excel
  • React 什么时候会触发重新渲染?
  • 工业相机选型五要素
  • Java 大视界 -- 大数据伦理与法律:Java 技术在合规中的作用与挑战(87)
  • 专业的销售网站/互联网公司
  • 工程施工合同协议书范本/seo监控
  • 做企业网站有什么工作内容/如何让自己的网站被百度收录
  • 做网站原型的简单工具/怎么搭建一个网站
  • 井祥交通建设工程有限公司 网站/在线生成网页网站
  • 网站建设移动端官网/怎样联系百度客服