5

我已经编写了一个 C++ 程序,我想为它编写一个 GUI。我意识到 Qt 是一个很棒的工具,但是,Qt 有它自己的类,这让我很困惑。例如:Qt 有一个名为 QString 的类,而不是 String。

我想知道我是否可以在 C++ 中混合 C++ 代码和 Qt 代码?

4

6 回答 6

7

是的,你可以很容易地混合 Qt 和 STL。

GUI 需要QStrings 但会默默地创建这些表单std::stringor char*QStrings从 Qt 返回的可以使用toStdString()or进行转换toAscii()

Qt 包含一组集合类,但您不必使用它们。

Qt 在看起来像现代 C++ 方面做得很好,有一些“额外”来处理信号和槽事件机制,但这些对于构建环境来说比代码更复杂。

编辑:谢谢比尔

于 2009-08-28T21:13:34.423 回答
1

我不建议将 std c++ 代码和 Qt 代码混合在一起。

假设您的 c++ 代码是逻辑,那么 Qt 代码应该仅用于 GUI。使用 MVC/MVP 模式或类似的方式,将您的逻辑和 UI 分开。

因此,将来能够在使用/不使用 UI 的情况下运行代码会更容易。

于 2013-03-15T07:36:51.140 回答
0

简而言之,是的,你可以!例如,QString 本质上是一个字符串,并且有一个 toAscii() 方法,因此您可以轻松地将 Qt 用于您的项目。尽管您可能会遇到将 Qt 集成到 Visual Studio 中的一些问题(假设您正在使用它),但您将能够混合使用 C++ 代码和 Qt 代码(在 C++ 中)

于 2009-08-28T21:14:28.073 回答
0

是的!Qt 是您可以在 C++ 代码中使用的东西。Qt 主要用于 GUI,但它是 Socket、Containers、Network 等的好类……您可以自由使用 STL 和其他普通类或 Qt 为您提供的类。最重要的一点是,如果您在主编译之前在代码中使用 Qt,您应该进行元编译以使其为您的编译器做好准备。您应该注意的一件事是 Qt 不是标准的,这意味着尽管它支持 Windows、Linux 和 Mac OS,但它不能在其他平台上使用。

于 2009-08-28T22:58:55.710 回答
0

它们可以一起使用。

C++ 历史悠久,STL 实现和支持随着语言的发展而发展。我认为前 Trolltech 团队认为他们对 STL 实现的质量和可用性没有足够的控制权,无法使 Qt 库依赖它。结果是Qt有自己的QTL、QtAlgorithms header和QString。

他们已经注意使它们与 STL 兼容:

  • 大多数容器具有与 STL 相似的接口(例如:迭代器访问、push_back()、empty() 等)
  • Qt 容器可以与 STL 容器相互转换(例如:QVector::toStdVector、QList::fromStdList)
  • Qt 容器可以与 STL 算法一起使用
  • QString 可以使用 toStd(W)String / fromStd(W)String 与 std::string 和 std::wstring 相互转换

就个人而言,我更喜欢 QString 而不是 std::string,它更易于使用且功能更强大。

于 2009-08-29T09:47:24.223 回答
0

是的你可以。

我实际上为一组基于 C 的函数制作了一个 Qt-GUI 包装器。Qt集成没有问题,只有低级C(泄漏内存......)。

见这里:http ://code.google.com/p/qhocr/

于 2009-08-29T10:06:04.293 回答