【问题标题】:Qt OpenGL GUI: Add and Undo QpushbuttonQt OpenGL GUI:添加和撤消 Qpushbutton
【发布时间】:2012-01-24 05:44:37
【问题描述】:

在我的主窗口中,我有两个 Qpushbuttons:添加对象按钮和撤消按钮。

当我单击添加对象按钮时,它会渲染一个 OpenGL 模型,我希望它在我再次单击添加按钮时渲染另一个模型。撤消按钮应该撤消最后的添加操作。

我怎样才能做到这一点?

【问题讨论】:

  • 我假设C++?看看events and signals
  • 所以你只想在一组网格的元素之间来回切换? (可能在结束时进行环绕?)。如果是这样的话,这看起来不像是 OpenGL 或 Qt 问题。
  • 这是关于基本 GUI 编程的。首先,您需要能够在按下特定按钮时执行某事。没关系;只需让检测部分工作。然后,您需要弄清楚如何渲染多个模型,以便您可以在列表中添加和删除。最后,您可以将该概念与添加/删除按钮挂钩。

标签: qt user-interface opengl undo


【解决方案1】:

OpenGL 模型,当我再次单击添加按钮时,我希望它呈现另一个模型。

您将 OpenGL 与场景​​图混淆了。 OpenGL 不维护对象或几何体的场景。我只是画的东西。如果您更改某些内容,则必须从您维护的场景数据中重新绘制整个内容。

撤消/重做成为对场景数据的操作。并且在对场景进行操作之后就可以使用OpenGL来绘制场景了。

【讨论】:

  • 谢谢。我连接了 Add 按钮来调用一个使用对象绘制场景的函数,然后我连接了 Undo 按钮以重新绘制没有该对象的场景。看起来还可以!但是现在,如何使添加按钮在每次单击时绘制不同的对象,比如说我第一次单击,它添加了 object1,我第二次单击它并添加了对象 2。然后我单击 Undo,它重新绘制了只有对象的场景1,然后我再次单击撤消并绘制没有任何对象的场景?
【解决方案2】:

Qt 有一个完整的framework 专用于撤消/重做堆栈。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多