【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某个控件的坐标原点,由其父控件决定:

相关推荐
hummhumm2 分钟前
Oracle 第29章:Oracle数据库未来展望
java·开发语言·数据库·python·sql·oracle·database
wainyz11 分钟前
Java NIO操作
java·开发语言·nio
喵叔哟20 分钟前
重构代码之用委托替代继承
开发语言·重构
lzb_kkk25 分钟前
【JavaEE】JUC的常见类
java·开发语言·java-ee
SEEONTIME25 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
Zfox_26 分钟前
【Linux】进程信号全攻略(二)
linux·运维·c语言·c++
起名字真南44 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
少年负剑去44 分钟前
第十五届蓝桥杯C/C++B组题解——数字接龙
c语言·c++·蓝桥杯
cleveryuoyuo1 小时前
AVL树的旋转
c++
tyler_download1 小时前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang