• Why Does Qt Use Moc for Signals and Slots(QT官方的解释:GUI可以是动态的)


    GUIs are Dynamic

    C++ is a standarized, powerful and elaborate general-purpose language. It's the only language that is exploited on such a wide range of software projects, spanning every kind of application from entire operating systems, database servers and high end graphics applications to common desktop applications. One of the keys to C++'s success is its scalable language design that focuses on maximum performance and minimal memory consumption whilst still maintaining ANSI C compatibility.

    For all these advantages, there are some downsides. For C++, the static object model is a clear disadvantage over the dynamic messaging approach of Objective C when it comes to component-based graphical user interface programming. What's good for a high end database server or an operating system isn't necessarily the right design choice for a GUI frontend. With moc, we have turned this disadvantage into an advantage, and added the flexibility required to meet the challenge of safe and efficient graphical user interface programming.

    Our approach goes far beyond anything you can do with templates. For example, we can have object properties. And we can have overloaded signals and slots, which feels natural when programming in a language where overloads are a key concept. Our signals add zero bytes to the size of a class instance, which means we can add new signals without breaking binary compatibility.

    Another benefit is that we can explore an object's signals and slots at runtime. We can establish connections using type-safe call-by-name, without having to know the exact types of the objects we are connecting. This is impossible with a template based solution. This kind of runtime introspection opens up new possibilities, for example GUIs that are generated and connected from Qt Designer's XML UI files.

    http://doc.qt.io/qt-5/why-moc.html

  • 相关阅读:
    PyTorch神经网络的设计,尺寸数据的计算
    PyTorch数据处理,datasets、DataLoader及其工具的使用
    opencv、PIL.Image、matplotlib.pyplot 读图、显示、相互转换
    python安装opencv
    VS2019开发python
    【转载】pytorch常用损失函数
    5、实战:CIFAR-10分类
    【转载】Halcon小技巧之保存带有region的图片
    采用管道进行通讯的例子
    给定一个数组,找出不在数组中的最小的那个数字
  • 原文地址:https://www.cnblogs.com/findumars/p/5697760.html
Copyright © 2020-2023  润新知