完成Hello World可以通过很多控件实现
如采用编辑框来完成hello world
编辑框分为单行编辑框----QLineEdit
和多行编辑框---QTextEdit
采用单行编辑框,创建项目后,展开forms文件夹,双击ui文件进入
qt designer设计页面
找到line edit
拖到页面中,双击进行文本输入
运行后就能输出hello world
输出了一个文本框,可以进行修改
使用纯代码方式实现
在weight构造函数中引入一个QLineEdit类,插入对象树,并设置文本,需引入头文件
运行后就能输出文本框和设置的内容
使用按钮的方式实现helloworld
双击ui文件进入Qt Designer
使用push button,设置文本内容后,同样可以进行文本输出
并且可以进行点击,若想通过点击实现一定操作,使点击具有反馈,就需要使用Qt中的信号槽机制
信号槽机制
本质就是给按钮的点击操作关联上一个处理函数,当用户进行点击的时候,就会执行这个处理函数
同样是在weight的构造函数处实现
调用connet函数,将信号与槽绑定
ui->pushButton是指向ui文件中创建的控件,在Qt Designer中创建一个控件的时候就会为其分配一个objectName属性,值是唯一的,可以进行修改,表示由谁发送信号
&QPushButton::clicked是一个信号,点击按钮时就会发送信号,表示发送什么信号
this表示由weight进行信号接收,表示由谁接收信号
&Weight::handleClick表示接收到信号后所调用的处理函数
在头文件中进行处理函数的声明
在cpp文件中实现函数的定义,实现点击一次就切换内容,通过对button中的文本的判断来实现随着点击发送信号,调用处理函数,内容进行切换
为什么可以可以通过ui->pushButton的方式来访问button的内容?
在创建按钮时,自动在ui_widget.h----根据widget.ui文件生成的文件中包含一个QPushButton* pushButton成员,与Designer界面中设置的objectName值一致,在ui文件编译时,会生成一个C++头文件,其中会定义一个Ui::XXX的类,该类包含ui界面中的所有控件的成员变量
通过代码实现QPushButton
在头文件中包含QPushButton头文件,将QPushButton设置为成员变量,声明处理函数
在cpp文件中实现成员变量定义,文本设置,信号与槽连接,处理函数定义
纯代码版本和通过Qt Designer设置button的区别
纯代码需自己new一个QPushButton,将其设置为widget成员变量后,通过this指针直接访问
而Designer的按钮对象不需要进行new,new对象的操作是由Qt自动生成的,按钮对象被作为ui对象中的一个成员变量进行访问