我已经编写了一个 C++ 程序,我想为它编写一个 GUI。我意识到 Qt 是一个很棒的工具,但是,Qt 有它自己的类,这让我很困惑。例如:Qt 有一个名为 QString 的类,而不是 String。
我想知道我是否可以在 C++ 中混合 C++ 代码和 Qt 代码?
我已经编写了一个 C++ 程序,我想为它编写一个 GUI。我意识到 Qt 是一个很棒的工具,但是,Qt 有它自己的类,这让我很困惑。例如:Qt 有一个名为 QString 的类,而不是 String。
我想知道我是否可以在 C++ 中混合 C++ 代码和 Qt 代码?
是的,你可以很容易地混合 Qt 和 STL。
GUI 需要QString
s 但会默默地创建这些表单std::string
or char*
,QStrings
从 Qt 返回的可以使用toStdString()
or进行转换toAscii()
。
Qt 包含一组集合类,但您不必使用它们。
Qt 在看起来像现代 C++ 方面做得很好,有一些“额外”来处理信号和槽事件机制,但这些对于构建环境来说比代码更复杂。
编辑:谢谢比尔
我不建议将 std c++ 代码和 Qt 代码混合在一起。
假设您的 c++ 代码是逻辑,那么 Qt 代码应该仅用于 GUI。使用 MVC/MVP 模式或类似的方式,将您的逻辑和 UI 分开。
因此,将来能够在使用/不使用 UI 的情况下运行代码会更容易。
简而言之,是的,你可以!例如,QString 本质上是一个字符串,并且有一个 toAscii() 方法,因此您可以轻松地将 Qt 用于您的项目。尽管您可能会遇到将 Qt 集成到 Visual Studio 中的一些问题(假设您正在使用它),但您将能够混合使用 C++ 代码和 Qt 代码(在 C++ 中)
是的!Qt 是您可以在 C++ 代码中使用的东西。Qt 主要用于 GUI,但它是 Socket、Containers、Network 等的好类……您可以自由使用 STL 和其他普通类或 Qt 为您提供的类。最重要的一点是,如果您在主编译之前在代码中使用 Qt,您应该进行元编译以使其为您的编译器做好准备。您应该注意的一件事是 Qt 不是标准的,这意味着尽管它支持 Windows、Linux 和 Mac OS,但它不能在其他平台上使用。
它们可以一起使用。
C++ 历史悠久,STL 实现和支持随着语言的发展而发展。我认为前 Trolltech 团队认为他们对 STL 实现的质量和可用性没有足够的控制权,无法使 Qt 库依赖它。结果是Qt有自己的QTL、QtAlgorithms header和QString。
他们已经注意使它们与 STL 兼容:
就个人而言,我更喜欢 QString 而不是 std::string,它更易于使用且功能更强大。
是的你可以。
我实际上为一组基于 C 的函数制作了一个 Qt-GUI 包装器。Qt集成没有问题,只有低级C(泄漏内存......)。