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

相关推荐
jingling55510 分钟前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
oioihoii21 分钟前
C++11 forward_list 从基础到精通:原理、实践与性能优化
c++·性能优化·list
m0_6873998429 分钟前
写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
开发语言·c++·ffmpeg
爱上语文39 分钟前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
A~taoker1 小时前
taoker的项目维护(ng服务器)
java·开发语言
萧曵 丶1 小时前
Rust 中的返回类型
开发语言·后端·rust
hi星尘1 小时前
深度解析:Java内部类与外部类的交互机制
java·开发语言·交互
看到我,请让我去学习1 小时前
Qt编程-qml操作(js,c++,canvas)
开发语言·qt
橘子编程1 小时前
Python-Word文档、PPT、PDF以及Pillow处理图像详解
开发语言·python
Ronin3052 小时前
【C++】类型转换
开发语言·c++