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

相关推荐

  1. centos 安装 qtCreator

    2024-07-14 14:02:04       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 14:02:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 14:02:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 14:02:04       58 阅读
  4. Python语言-面向对象

    2024-07-14 14:02:04       69 阅读

热门阅读

  1. 05.CSS 缓动变量 && 首字下沉 & 放大缩小动画

    2024-07-14 14:02:04       21 阅读
  2. iOS热门面试题(三)

    2024-07-14 14:02:04       18 阅读
  3. 六爻排盘 api数据接口

    2024-07-14 14:02:04       21 阅读
  4. LeetCode 367, 56, 22

    2024-07-14 14:02:04       20 阅读
  5. 【关于Pinia与Vuex】

    2024-07-14 14:02:04       16 阅读
  6. Swift 基于Codable协议使用

    2024-07-14 14:02:04       20 阅读