如何在Qt中添加自定义类处理功能

时间:2014-01-16 20:26:39

标签: c++ qt user-interface dll

我对Qt有点新鲜。我已经用C ++编程了很长一段时间。

我想在Qt / C ++中创建一个应用程序,因为它很容易创建GUI。我想知道我可以在本机C ++中编写C ++类并在我的Qt应用程序中使用它。

我想在Qt中编写GUI并使用我的本机C ++代码而不是Qt / C ++进行所有处理。是否可以在本机C ++中编译DLL,然后在QtC ++应用程序中加载和使用它?

我真的想用C ++编写GUI应用程序。

2 个答案:

答案 0 :(得分:3)

与“Qt / C ++”相比,没有“本地C ++”这样的东西,所以这个问题没有多大意义。所有核心Qt代码都是使用本机C ++编译的,就像任何使用Qt的C ++应用程序一样。

正如JBentley已适当注意到:

  

[你可能]因为Qt使用的代码生成工具而感到困惑,比如moc [或uic]。那些并不意味着C ++本身编译,而Qt则不编译。所有这些工具都提供了一种方便的方法来生成框架所依赖的大量锅炉代码,这样程序员就可以假装它们不存在并使用像Qt的插槽和信号这样的东西。你编译和链接的最终代码是普通的C ++,调用你使用过的Qt库(也就是C ++)。

如果你问的是“我是否被迫在我的应用程序的所有部分使用Qt类”,那么没有 - 没有人强迫你这样做。如果您已经使用boost或标准C ++库类编写了部分应用程序,那就没关系。

您必须了解Qt具有模块化设计并提供了许多非GUI功能。您可以在代码的非gui部分中使用非gui模块。它是一个相当干净和通用的应用程序开发框架。例如,将它用于各种互联网服务器应用程序非常好。

以下Qt模块适用于非gui开发:

  • Core:核心非图形类:容器,事件循环,定时器,线程,状态机,国际化,XML,json,文件I / O - 所有这些都是可移植的。
  • Network:使网络编程更容易,更便携的类。包括安全套接字,HTTP请求等。
  • SQL:使用SQL进行数据库集成的类。

答案 1 :(得分:0)

您可以使用任何您想要的C ++代码。在我的日常工作中,我实际上对同一个思维过程有疑问。首先,您需要了解Qt使用普通C ++和特殊工具来创建一组强大的库。

稍后回来,您将需要了解有关以下项目的更多信息:

  • 信号和广告位
    • 这是事件连接在一起的方式。
    • 一个对象发送一个信号,所有连接的插槽都会被给定的参数调用。
    • 信号和插槽是观察者模式的一个示例。
  • 设计师表单
    • 表单设计器允许您使用简单的拖放操作来布局控件。
    • .ui文件作为构建过程的一部分转换为C ++代码。
  • 布局
    • 只需水平,垂直和网格布局,您就可以做很多事情
  • 垫片
    • 您可以使用不同类型的垫片向上,向下,向左或向右推动
    • 他们看起来像是表单设计师的一个春天。
  • 资源文件
    • 允许您将图形和其他内容直接嵌入到应用程序中。
  • 模型,视图和代理
    • 如果你有一个非平凡的UI
    • ,那就很难避免

还有其他一些事情,但这些领域的知识将让你做一些体面的桌面应用程序。我最喜欢的参考资料是较旧的,但仍然是一个好东西:“使用Qt4进行C ++ GUI编程”http://www.amazon.com/Programming-Edition-Prentice-Software-Development/dp/0132354160

是的QT4是“旧的”而且QT5已经有一段时间了......但是这本书为你能够添加信息提供了坚实的基础。