Qt界面编程基础
作者:互联网
一、Qt简介
1、什么是Qt:
是使用C++语言封装的一套用于图形界面编程的框架,Qt专注但不局限于图形界面的开发,还支持系统调用、网络编程、数据库编程、2D/3D图形处理、音视频处理等。
它是跨平台了,支持几乎所有的主流操作系统,Linux、Windwos、MacOS、Android、iOS等系统。
2、为什么选择Qt
基于C++,简单易用
优良的跨平台特性,在个人计算机、工控、嵌入式 的界面占主导地位
二、Qt环境与工具
1、头文件和库文件
将Qt安装完成后,头文件的库文件会自动拷贝到以下路径中,方便为Qt应用程序提供运行支持。
头文件路径:/usr/include/qt4/
库文件路径:/usr/lib/i386-Linux-gnu/qt4/
静态库需要下载Qt源码进行手动编译
2、创造器,它是Qt官方提供一集成开环境,是集代码编辑、项目构建、编译、调试、版本管理于一体的。
3、设计器,以画图方式设计图形界面,所见即所得,但只是出现样子没有实际功能。
4、界面编译器,负责把设计器画出的文件编译成C++代码。
5、助手,qt的帮助手册,有各种的类说明,示例,还提供强大的查询功能。assistant命令打开
三、第一个Qt程序
1、编辑代码,完成后保存退出
QApplication 负责管理应用的资源,同行接收命令行参数。
exec() 是应用程序的控制权交给Qt,使程序进入事件循环,等待用户的动作,如,鼠标单击,按下键盘等操作。
QLabel 标签控件负责显示一些内容
show() 控制默认情况下是隐藏,show成员函数负责把控件显到前台
resize() 设置控件的界面大小。
2、构建项目,并生成项目文件
qmake -project -> xxx.pro文件
3、生成编译脚本
qmake -> Makefile
4、编译并运行
make
./xxx
#include <QApplication>
#include <QLabel>
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QLabel lab("Hello Qt!");
lab.show();
lab.resize(800,600);
return app.exec();
}
四、Qt创造器
1、启动创造器:qtcreator
2、创建项目:Qt控件项目->Qt GUI应用->项目路径->项目名称->选择界面类。
注意:路径和项目名称尽量不要有中文。
3、设计界面、编写代码、添加功能。
4、构建项目并运行。
常用的快捷键:
Alt+0 显示隐藏侧边栏
Ctrl+/ 注释、取消注释
Ctrl+I 自动调整代码格式
Ctrl+Shift+R 批量修改变量名
Ctrl+F 搜索、替换
Ctrl+单击 跳转到定义位置
Shift+F2 声明与定义之间切换
Alt+Shift+u 转换成大写
Alt+u 转换成小写
F4 源文件与头文件之间切换
F1 打开帮助手册
Ctrl+B 编译运行
Ctrl+B+S 保存所有文件再编译运行
Ctrl+R 运行
Ctrl+e松开后按0 关闭所有分割窗口
Ctrl+e松开后按1 关闭当前分割窗口
Ctrl+e松开后按2 水平分割窗口
Ctrl+e松开后按3 垂直分割窗口
五、帮助手册
inherits:该类继承了哪些类
1、Public Types: 访问权限是public的成员变量
2、Properties:访问权限是private的成员变量,这种成员一般都有get/set函数
3、Public Functions:访问权限是public的成员函数
4、Static Public Members:访问权限是public的静态成员
5、Public Slots:访问权限是public的槽函数
6、Signals:信号,注意:它不是函数,可以通过 emit 发送,与槽函数建立联系。
7、Reimplemented Protected Functions:一些虚函数,可以覆盖它们形成多太,可以被上层的代码自动调用,一般用它们实现对事件的处理。
8、Detailed Description:对本类的详细说明、使用方法、调用时的上下文注意事项等。
公有成员函数:
pos() 获取控件的位置
x() 获取控件的横向位置
y() 获取控件的竖向位置
move() 设置控件的位置
size() 获取控件的大小
resize() 设置控件的大小
height() 获取控件的高度
width() 获取控件的宽度
setText() 设置控件显示文字
text() 获取控件的文字
show() 显示控件
hide() 隐藏控件
setStyleSheet() 设置控制的css样式
六、中文处理
在Qt 4.8 默认使用的是utf-16的字符编码,windows系统默认的字符编码是GB系列,而Linux、MacOS默认使用的是utf-8的字符编码,如果直接使用中文在程序中就会出现乱码。
QTextCodec * QTextCodec::codecForName (const char * name) static
功能:创建字符编码类对象
name: "utf-8"
void QTextCodec::setCodecForLocale ( QTextCodec * c ) static
功能:设置本地系统使用的字符编码集
void QTextCodec::setCodecForCStrings ( QTextCodec * codec ) static
功能:设置程序中使用的QString的字符编码集
void QTextCodec::setCodecForTr ( QTextCodec * c ) static
功能:设置程序外部的字符编码集
固定的使用方法:
#include <QTextCodec>
QTextCodec* code = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(code);
QTextCodec::setCodecForLocale(code);
QTextCodec::setCodecForCStrings(code);
七、Qt中的字符串与输出
QString 具备string的所有功能
字符串字面值可以直接转换成QString类型,从界面输入的数据也都是QString类型的
QString可以通过to系列函数转换成各种类型
C/C++语言中的scanf/printf/cin/cout可以继续使用,但Qt建议使用qDebug,因为它具备cin/cout/scanf/pritnf的功能。
八、信号和槽
1、信号
Qt中的信号是模仿系统信息,对象与对象之间通信的一种方式。
Qt中的控件对象一旦发生什么变化就会发出信号通知其它对象。
2、槽函数
可以与信号绑定一种类成员函数,也可以当作普通的成员函数调用。
3、信号与槽函数的连接
bool QObject::connect(
const QObject *asender, 信号发者对象地址
const char *asignal, 发出的信号
需要使用SIGNAL()宏把信号转换成字符
const char *amember, 信号接收者对象地址
const char *method 对象接收的槽函数
需要使用SLOT()宏把槽函数转换成字符串
) const
connect(&sender,SIGNAL(clicked(void)),&recv,SLOT(close(void)));
注意:在写信号和槽函数时不需要手动编写,而尽量选择创造器的提示,原因是信号和槽一旦格式出错编译器无法发现。
九、窗口容器
从Hello案例中可以看出,一个控件就是一个窗口,要想把多个控件放在一个窗口中,需要需要把这些控件束缚一个容器中,这种控件就叫窗口容器。
1、QMainWindow
主窗口容器,由标题栏、菜单栏、工具栏、状态栏以及中央显示区域组成。
2、QDialog
对话框容器,管理多个不同的交互控件。
3、QWidget
纯粹的容器,它是QMainWindow和QDialog的父类。
在创建控件时,把容器的地址作为参数给控件,这样控件就被放入容器中了。
4、界面设计的工作原理
1、项目创建完成后会生成一个mainwindow.ui界面文件,双击该文件可以编辑界面。
2、mainwindow.ui会自动生成一份ui_mainwindow.h头文件,该文件在创造器中看不到。
3、在ui_mainwindow.h头文件中会自动生成Ui_MainWindow类,该类中会包含所有编辑的控件对象。
4、在ui_mainwindow.h头文件中还会自动创建MainWindow类,并继承Ui_MainWindow类且被包含Ui名字空间中。
5、mainwindow.h头文件中也会自动创建MainWindow类,该类中会有一个Ui::MainWindow* ui类型的成员,该对象会构造函数的初始化列表中被new创建。
6、构造函数函数调用了ui->setupUi(this)成员函数,设置窗口容器以及控件的样式,通过ui可以访问所有界面文件中的控件。
十、设计师的使用
1、设置窗口容器的界面大小
2、拖拽一些需要的控件
1、在对象查看器中设置控件的名字
2、设置控件的大小位置
3、使用方向键,Ctrl+方向键对控件位置进行微调
4、使用Shift+方向键,Shift+Ctrl+方向键对控件的大小进行微调
3、设置控件的字体、字号、特效。
4、设置控件的水平对齐、垂直对齐
5、设置控件是否启用
6、使用uic命令可以把.ui文件生成头文件。
QMainWindow w;
Ui::MainWindow windows;
windows.setupUi(&w);
w.show();
作业:实现QQ登录界面
标签:控件,界面,Qt,Ctrl,编程,QTextCodec,头文件,函数 来源: https://blog.csdn.net/xiaoqiudao/article/details/117791674