Qt5学习笔记

来源:互联网 发布:用友软件上海分公司 编辑:程序博客网 时间:2024/05/31 19:44

还没有接触过Qt5,学习它应该是一个漫长的过程。之前学习东西的时候都是采用手写笔记,第一次开博客,用来做为自己的电子笔记。因此整篇文章记录的是我自己的学习之路,不会有全面的介绍和学习,只是记录我个人的一些笔记碎片。

PS. 学习参考为:http://www.devbean.net/ 内的Qt学习之路2。再次感谢此文作者!

 

1、pro 文件:

#-------------------------------------------------

#
# Project created by QtCreator 2014-02-28T10:05:31
#
#-------------------------------------------------
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = mw
TEMPLATE = app
SOURCES += main.cpp\
        mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui

      首先,我们定义了 QT,用于告诉编译器,需要使用哪些模块。这些模块都在前面章节中有过介绍。我们通常需要添加 core 和 gui。第二行,如果 Qt 的主版本号(QT_MAJOR_VERSION)大于 4,也就是 Qt 5,则需要另外添加 widgets(因为在 Qt 5 中,所有组件都是在 widgets 模块定义的)。TARGET 是生成的程序的名字。TEMPLATE 是生成 makefile 所使用的模板,比如 app 就是编译成一个可执行程序,而 lib 则是编译成一个链接库(默认是动态链接库)。SOURCES 和 HEADERS 顾名思义,就是项目所需要的源代码文件和头文件。现在,我们只需使用默认的 pro 文件即可。以后随着项目的不断增大,pro 文件通常会非常复杂。 

 

2、在Qt creator中使用c++11(如Lambda表达式),需要在*.pro中添加下面一句话

      QMAKE_CXXFLAGS += -std=c++0x

      则可用类似表达式:[](){std::cout<<"HelloWorld!"<<endl;}

 

 

3、信号/槽:

      槽函数可以是成员函数、static函数、全局函数、Lambda表达式;但要求信号和槽的参数一致,如果不一致则可以允许槽函数的参数比信号的少,但此时必须保证槽函数存的那些参数顺序和信号的前面几个相一致。

      信号槽连接有5个重载,如下:

QMetaObject::Connection connect(const QObject *, const char *,
const QObject *, const char *,
Qt::ConnectionType);
QMetaObject::Connection connect(const QObject *, const QMetaMethod &,
const QObject *, const QMetaMethod &,
Qt::ConnectionType);
QMetaObject::Connection connect(const QObject *, const char *,
const char *,
Qt::ConnectionType) const;
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
const QObject *, PointerToMemberFunction,
Qt::ConnectionType)
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
Functor);

      定义一个类具有信号机制时注意:该类必须继承QObject类,并且在类声明的第一行代码写上Q_OBJECT;使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;使用emit在恰当的位置发出信号,如添加信号发出函数(如send())emit 信号函数。

      定义一个类的成员函数为槽函数:同样必须继承QOjbect类,并添加Q_OBJECT;必须自己完成cpp代码实现;会受到public、private、protected的影响。

 

4、MainWindow:

      QMainWindow是 Qt 框架带来的一个预定义好的主窗口类。

0 0