C++客户端Qt开发——QT初识

二、QT初识

1.helloworld示例

①图形化的方式,在界面上创建出一个控件,显示helloworld

右侧通过树形结构,就会显示出当前界面上有哪些控件

此时.ui文件已发生变化

qmake就会在编译项目的时候,基于这个内容,生成一段C++代码,通过C++代码构建出界面内容(自动完成)

②用代码创建helloworld

默认会在(0,0)的位置

③对象树

本质上是一个树形结构(N叉树),通过树形结构把界面上的各种元素组织起来

②中的代码创建,是在堆上new出来的一块空间,当把对象改成在栈上创建,此时就可以看到运行起来的程序无法显示出helloworld,此时label对象随着构造函数的结束,就销毁了,所以应该把它交给对象树进行管理

Qt的对象树模型提供了一种方便的方式来管理对象的生命周期和组织对象的关系,特别适用于GUI编程和事件处理。

Qt的对象树模型是一种递归的结构,其中一个对象可以拥有多个子对象,而每个子对象又可以拥有自己的子对象,以此类推。

在对象树模型中,父对象的销毁会导致所有子对象的自动销毁当一个QObject对象被销毁时,它的所有子对象也会被递归地销毁。这种自动内存管理机制使得在Qt中不需要手动管理对象的生命周期,提高了代码的简洁性和可维护性。

④乱码问题

主要有两种方式表示汉字字符集

  • GBK(中国大陆)使用2个字节表示一个汉字,windows简体中文版,默认字符集就是GBK
  • UTF-8/utf8变长编码,表示一个符号,使用的字节数有变化,2~4个邹姐。但是在utf8中,一个汉字一般是3个字节,linux默认是utf8

如果字符本身就是utf8,但是终端是用GBK解析的,就会出现乱码

解决方式:qDebug()

QDebug是Qt中的类,又不会直接使用这个类

qDebug(),封装了QDebug对象,直接使用QDebug(),可以直接当做cout来使用

如果需要打印日志输出调试信息,优先使用qDebug

qDebug还有个好处是打印的调试日志,是可以统一进行关闭的

⑤实现helloworld

控件方式

代码方式

在widget.cpp中,使用QLineEdit

按钮方式

QT中的信号和槽机制:本质就是给按钮的点击操作关联上一个处理函数,当用户点击的时候,就会执行这个处理函数

使用connect函数,是QObhect这个类提供的静态函数,这个函数的作用就是"连接信号和槽"

connect参数

connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);

  • ui->pushButton访问到from file(ui文件)中创建的空间,确认谁发出的信号

在QT Designer中创建一个控件的时候,此时会给这个控件分配一个objectName属性,这个属性的值,要求是在界面中是唯一的,不能和别人重复

会自动生成一个,也可以手动修改成别的,qmake在预处理.ui文件的时候,就会根据这里的objectName的时候

  • &QPushButton::clicked,点击按钮的时候就会自动触发这个信号,能知道发出了什么信号
  • this,谁来处理这个信号
  • &Widget::handleClick具体怎么处理,需要实现handleClick函数
cpp 复制代码
void Widget::handleClick()
{
    if(ui->pushButton->text() == QString("helloworld"))
    {
        ui->pushButton->setText("hello qt");
    }
    else
    {
        ui->pushButton->setText("helloworld");
    }

}

2.命名规范

①蛇形命名法(下划线)

student_count

②驼峰命名法

studentCount小驼峰(变量函数多用)

Studentcount大驼峰(类多用)

3.查询文档方式

①快捷键

注释:ctrl+/

运行:ctrl+R

编译:ctrl+B

字体缩放:ctrl+鼠标滚轮

查找:ctrl+F

整行移动:ctrl+shift+↑/↓

帮助文档:F1

自动对齐:ctrl+i

同名之间的.h和.cpp的切换:F4

生成函数声明的对应定义:alt+enter

②使用帮助文档

4.QT窗口坐标体系

坐标体系:以左上角为原点(0,0),x向右增加,y向下增加

给qt的某个控件设置位置,就需要指定坐标,对于这个控件来说,坐标系原点就是相对于父窗口/控件

使用 move****函数来设置按钮的位置,单位是像素

button->move(200,300);控件位置

this->move(200,300);窗口位置

相关推荐
Wangx_wang9 分钟前
C++——list常见函数的使用和模拟实现(2)
开发语言·c++·list
MessiGo12 分钟前
Qt 实战(10)模型视图 | 10.4、模型角色
开发语言·qt
A.A呐13 分钟前
LeetCode 692.前K个高频单词
c++·算法·leetcode
搁浅°87916 分钟前
Collection
java·开发语言·windows
月夕花晨37420 分钟前
C++学习笔记(21)
c++·笔记·学习
nice6666025 分钟前
xml基础
xml·java·开发语言·前端·css·bootstrap·idea
Evand J29 分钟前
【逐行注释】自适应观测协方差R的AUKF(自适应无迹卡尔曼滤波,MATLAB语言编写),附下载链接
开发语言·matlab·r语言
小白学大数据32 分钟前
利用R语言进行头条主页内容的自动化下载
开发语言·r语言·自动化
_Power_Y41 分钟前
JavaSE:4、流程控制
java·开发语言·算法
知识分享小能手1 小时前
mysql学习教程,从入门到精通,SQL IN & BETWEEN 运算符(13)
大数据·开发语言·数据库·python·sql·学习·mysql