firemail

标题: Qt分享 [打印本页]

作者: Qter    时间: 2020-1-30 19:52
标题: Qt分享
本帖最后由 Qter 于 2020-1-30 19:54 编辑

其中信号和槽,还有Qt的内存管理,我觉得是掌握Qt的关键,这也是它在技术方面区别与其他c++框架的2个特点。
   Qt是完全组件式编程的,也就是说它把我们常用到的功能模块编成动态库了,我们可以按需要分别去引用,而不用担心会把Qt整个框架加进来。比如,你要用Qt写个ftp程序,那只要引用QtCore4.lib和QtNetwork4.lib就可以,然后在发布时带上QtCore4.dll,QtNetwork4.dll。

     Qt的SDK可以直接去它官网下载,上面提供的下载版本很多,如果是在windows上面开发,建议大家下载qt-win-opensource-4.8.2-vs2010.exe
     Qt还提供了vs的插件,插件提供的功能有:新建Qt工程向导、帮助编译资源和moc (Meta Object Compiler)。这个插件也很好用,不过我一般不用它,我一般都是自己写脚本控制moc等,这样更灵活一些

1.Qt 可以用来做什么;
2.Hello World;
3.信号与槽函数;
4.Qt的内存管理机制;



Qt 是跨平台的应用程序和 UI 框架。 使用 Qt,您只需一次性开发应用程序,就可跨不同桌面和嵌入式操作系统进行部署,而无须重新编写源代码。
使用单一的源代码库定位多个操作系统
通过重新利用代码可将代码跨设备进行部署
无须考虑平台,可重新分配开发资源
代码不受担忧平台更改影响的长远考虑
使开发人员专注于构建软件的核心价值,而不是维护 API








#include <QCoreApplication>

int main(int argc, char *argv[])
{
        QApplication app(argc, argv);
        qDebug("Hello world!");
        return app.exec();
}




Signals & Slots



Observer pattern
callbacks
Many-to-many relationship
Loose coupling between signals and slots
Implemented in QObject


class NewClass : public QObject
{
        Q_OBJECT // Meta-object file needed
        // Code convention recommends Q_OBJECT use always,
        // otherwise qobject_cast fails
        signals:
        // Implementation in the meta-object
        void newSignal(int myInt, QString myString);
        public slots:
        // Slots are implemented as normal member functions
        void newSlot(int i, QString s);
}




Qt内存管理机制


所有继承自QObject类的类,如果在new的时候指定了父亲,那么它的清理是在父亲被delete的时候delete的;
建议使用deleteLater();
智能指针类QPointer;
链接:https://pan.baidu.com/s/1ZwA6xJQrkyWGpEsekSnOKw
提取码:g4sv










欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3