QT creator简介

Qt Creator:轻量级跨平台集成开发环境,包含高级C++代码编辑器、集成的GUI外观和版式设计器、项目和生成管理工具、集成的上下文相关帮助系统以及图形化调试器等。

Qt Designer:强大的拖曳式图形化用户界面排版和设计工具。

Qt Linguist:多国语言翻译工具,用于Qt应用程序的多国语言翻译。

Qt Assistant:基于Qt的开源帮助文档阅读器,用于阅读由Qt Assistant应用程序生成的帮助文件。

qmake:用于编译ui文件的命令行工具,全称为UI Compiler。

uic:全称为User Interface Compiler,将.ui文件编译为.h文件的命令行工具。

moc:全称为Meta-Object Compiler,将.h文件进行元对象编程的命令行工具。

对象间的通信机制 --- 信号和槽机制(Signal & Slot)

信号是在特定情况下被发射的事件,例如PushButton最常见的信号就是鼠标单击时发射的clicked()信号。发射信号使用emit关键字。定义信号使用QT的signals关键字。

槽是对信号响应的函数,就是一个普通的成员函数,可以声明在类的任何部分,可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。

要使用信号和槽,需要使用Qt的connect函数将信号和槽连接起来。当指定的信号被发射时,与之关联的槽函数将被自动执行。

创建信号和槽函数

在窗口类的定义中添加信号和槽函数签名。

创建一个信号actionClicked和一个槽函数myslot

signals:    

        void actionClicked();

private slots:    

        void myslot();

在窗口类的实现文件中实现槽函数

void Demo1::myslot()

{    

        QMessageBox::information(this,"Action","New");

}

在需要触发槽函数的地方连接信号和槽。可以使用QObject的connect函数将信号和槽连接起来。

//信号连接

// 将菜单的triggered信号连接到Demo1的actionClicked信号

connect(ui->actionNew, SIGNAL(triggered()), this, SIGNAL(actionClicked()));

//信号和槽连接  

connect(this, SIGNAL(actionClicked()), this, SLOT(myslot()));

SIGNAL()和SLOT()是Qt定义的两个宏,它们返回其参数的C语言风格的字符串(const char*)。

信号与槽机制的连接方式

(1)一个信号可以与另一个信号相连,代码如下:

connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));

表示Object1的信号1发送可以触发Object2的信号1发送

(2)同一个信号可以与多个槽相连,代码如下:

connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2)); connect(Object1,SIGNAL(signal2),Object3,SIGNAL(slot1));

(3)同一个槽可以响应多个信号,代码如下:

connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2)); connect(Object3,SIGNAL(signal2),Object2,SIGNAL(slot2)

但是,常用的连接方式为:

connect(Object1,SIGNAL(signal),Object2,SLOT(slot));

其中,signal为对象Object1的信号,slot为对象Object2的槽。

Qt 5元对象系统

Qt 5元对象系统提供了对象间的通信机制(信号和槽)、运行时类型信息和动态属性系统的支持,是标准C++的一个扩展,它使Qt能够更好地实现GUI图形用户界面编程。Qt 5的元对象系统不支持C++模板,尽管该模板扩展了标准C++的功能。但是,元对象系统提供了模板无法提供的一些特性。Qt 5元对象系统基于以下三个事实。

(1)基类QObject:任何需要使用元对象系统功能的类必须继承自QObject。

(2)Q_OBJECT宏:Q_OBJECT宏必须出现在类的私有声明区中,用于启动元对象的特性。 (3)元对象编译器(Meta-Object Compiler,moc):为QObject子类实现元对象特性提供必要的代码实现。

交叉编译

交叉编译是指在一类计算机上编译生成另一类计算机上运行的代码。例如,我们可以在运行x86的Linux的计算机上编译生成运行在Arm上的程序。

交叉编译需要使用交叉编译器,例如GCC的交叉版本Cross GCC。交叉编译器需要在目标计算机上创建一个运行环境,然后将这个运行环境集成到主机计算机的编译过程中。

$ arm-linux-gnueabi-gcc -o outputfile inputfile.c

  • 21
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值