代码之家  ›  专栏  ›  技术社区  ›  JayD3e

QT如何仅使用C++来为许多平台定制自定义GUI?

  •  1
  • JayD3e  · 技术社区  · 14 年前

    我不知道Qt是如何工作的,为了为每个平台创建自己的自定义GUI外观/感觉。它是否利用了每个平台的API或其他东西?我之所以这样问,是因为我真的很想知道如何创建自己的框架,以便生成具有独特图形外观的定制GUI应用程序。

    3 回复  |  直到 8 年前
        1
  •  3
  •   Merlyn Morgan-Graham    14 年前

    “QT如何仅使用C++来为许多平台定制自定义GUI?”

    “它是否利用了每个平台的API……“

    你回答了你自己的问题。它为开发人员编写应用程序提供了一个通用库。应用程序开发人员只编写一次应用程序,而不关心平台的具体情况。然后,库作者为每个平台提供库的不同版本,这些版本处理所有特定的UI调用。这称为封装:

    http://en.wikipedia.org/wiki/Information_hiding#Encapsulation

    如果您要编写自己的此类库,则需要弄清楚目标平台之间的共同点,或者弄清楚应用程序需要哪些高级概念,并创建抽象。然后,为您想要支持的每个平台实现这个抽象。

    编辑:

    另请参见朱利亚诺的评论。这似乎更接近你想做什么,而不是你问的问题。如果我能避免的话,我不会像Trolltech、WxWidgets团队、GTK的人或者Mono的人那样重新做工作。

        2
  •  3
  •   Bruce    14 年前

    Trolltech(现在的诺基亚)的优秀员工为您编写所有平台特定的代码。只有到它们库的接口在平台上保持不变。您必须确保只使用它们的类,并且不进行任何特定于操作系统的调用。 如果需要,可以修改图形和处理程序来扩展qt库并创建自己的外观。

        3
  •  1
  •   WhackinMyKeyboard    8 年前

    您的Qt应用程序不必具有简单的标准平台图形外观,但有一些方法可以使用Qt设计独特的应用程序。

    例如,可以使用样式表设置应用程序的样式: http://doc.qt.io/qt-5/stylesheet.html 或者甚至使用定制的qStyle(这并不容易): http://doc.qt.io/qt-5/qstyle.html

    QtQuick是我们在即将到来的Qt4.7中引入的一项新技术(如果您感兴趣,请查看测试版)。它允许您使用自定义动画、状态转换和其他效果,从简单的原语轻松定义自定义UI组件。参见例如 http://www.youtube.com/watch?v=8G4U7QWRajg .