【Qt】对象树与坐标系


需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。


目录

[一、Qt Creator快捷键](#一、Qt Creator快捷键)

二、对象树

1、对象树的析构

2、自定义类的编写

[三、使用控件显示hello world](#三、使用控件显示hello world)

1、QLineEdit(单行文本输入框)

2、PushButton(按钮)

两种控制控件的方式

四、Qt窗口坐标体系


一、Qt Creator快捷键

• 注释:ctrl + /

• 运行:ctrl + R

• 编译:ctrl + B

• 字体缩放:ctrl + 鼠标滑轮

• 查找:ctrl + F

• 整行移动:ctrl + shift + ⬆/⬇

• 帮助文档:鼠标定位+F1

• 自动对齐:ctrl + i

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

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

• ctrl +鼠标左键跳转定义 ,Alt+⬅️跳转回来

二、对象树

1、对象树的析构

cpp 复制代码
QLabel* label = new QLabel(this);

因为对象树,上述代码不主动调用delete,label对象在窗口关闭的时候会被析构释放。

如果这个变量是在栈上创建的,就可能出现"控件被提前释放的问题",这也是Qt喜欢在堆区申请空间的原因。

2、自定义类的编写

编写一个自定义类,需要在其构造函数中,指定父对象,这样通过自定义类构造的对象才会被挂到对象树上。(如果对象没有挂到对象树上,就必须手动释放资源,防止资源泄漏)

通过继承Qt内置的类,就可以达到对现有控件功能进行扩展。(继承后重写类方法)

三、使用控件显示hello world

1、QLineEdit(单行文本输入框)

2、PushButton(按钮)

代码中通过这个objectName来对控件进行控制。(ui->objectName来控制)

cpp 复制代码
void Widget::HandleClick()
{
    if (ui->pushButton->text() == QString("hello world")){
        ui->pushButton->setText("hello qt"); // 点击按钮后,变为hello qt
    }
    else {
        ui->pushButton->setText("hello world"); // 点击按钮后,变为hello world
    }
}

两种控制控件的方式

四、Qt窗口坐标体系

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

Qt某个控件的坐标原点,由其父控件决定:

相关推荐
学地理的小胖砸2 分钟前
【高分系列卫星简介——高分一号(GF-1)】
开发语言·数码相机·算法·遥感·地理信息
心怀花木5 分钟前
【C++】模拟实现list
c++·stl·list
知识分享小能手8 分钟前
mysql学习教程,从入门到精通,SQL ORDER BY 子句(14)
大数据·开发语言·数据库·sql·学习·mysql·大数据开发
lkasi30 分钟前
python文字转wav音频
开发语言·python
kkk_皮蛋36 分钟前
力扣773:滑动谜题
c++
白茶等风1213840 分钟前
C#_封装详解
开发语言·c#
程序员阿鹏1 小时前
ArrayList 与 LinkedList 的区别?
java·开发语言·后端·eclipse·intellij-idea
技术不支持1 小时前
WSL2+Ubuntu 22.04搭建Qt开发环境+中文输入法
linux·运维·服务器·qt·ubuntu
繁依Fanyi1 小时前
使用 Spring Boot + Redis + Vue 实现动态路由加载页面
开发语言·vue.js·pytorch·spring boot·redis·python·算法
星尘安全1 小时前
一种新的电子邮件攻击方式:AiTM
开发语言·网络安全·php·网络钓鱼·aitm