ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Qt界面编程基础

2021-06-10 21:29:45  阅读:244  来源: 互联网

标签:控件 界面 Qt Ctrl 编程 QTextCodec 头文件 函数


一、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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有