目录
一、按钮 QPushButton
1.1 按钮帮助手册
The QPushButton widget provides a command button. More...
Header: | #include <QPushButton> |
qmake: | QT += widgets |
Inherits: | |
Inherited By: |
使用按钮,需要包含头文件 #include <QPushButton>。
1.2 按钮控件常用API
- 按钮控件常用API:
创建按钮:在 .h文件栈中创建,QPushButton btn1;(或者堆中指针,QPushButton *btn1;btn1 = new QPushButton(this);)
指定父对象 / 设置父窗口:btn1.setParent(this);(或者:QPushButton *btn = new QPushButton(this);)
设置文本:btn1.setText("123");
设置位置:btn1.move(宽, 高);
重新指定按钮大小:btn1.resize(宽, 高);
显示 / 隐藏:btn1.show();btn1.hide();
- 窗口常用API:
重新指定窗口大小:resize(宽, 高);
设置窗口固定大小(不可缩放):setFixedSize(宽, 高);
设置窗口标题:setWindowTitle("Hello!");
1.3 创建一个按钮
- 方法一:堆中创建。构造函数里,堆中new对象,配置,show显示。(不建议使用这种方式,这种写法即使指定了父对象也需要show才能显示。而且在.h文件中找不到控件对象,不利于长代码的阅读)
.cpp构造函数中: // 创建一个按钮 QPushButton *btn = new QPushButton; // 显示文本 btn->setText("123"); // show,以顶层方式弹出窗口控件 btn->show();
- 方法二:堆中创建。.h中创建指针,.cpp构造函数堆中申请内存。(指定父对象后可省略show();)
.h文件中,public/private作用域下: QPushButton *btn1; .cpp构造函数中: btn1 = new QPushButton; btn1->setText("123"); btn1->show();
- 方法三:栈中创建。.h文件里栈中创建对象,构造函数中对按钮控件进行配置。(指定父对象后可省略show();)
.h文件中,public/private作用域下: QPushButton btn1; .cpp构造函数中: btn1.setText("123"); btn1.show();
注意:
- 代码不要写在main.cpp里,不利于阅读。都要写在窗口的类文件中(weight.h.cpp)。
- 构造函数里不能创建对象,因为是局部,执行完就会被释放掉,故得不到显示。
- 现象:分成了两个窗口弹出,因为没有设置按钮的父对象,所以是单独弹出一个窗口显示按键。
这显然不是预期的结果,我们想让按键显示在主窗口上,这时需要将按键指定父对象。
1.4 指定父对象 / 设置父窗口
指定父对象,方法有2种:
1)setParent();
2)通过构造函数传参
指定父对象后,只要父对象显示,包含的子对象也会跟着一起显示。(所以按钮控件不需要单独show)
1)setParent();
.h文件中,public/private作用域下: QPushButton btn1; .cpp构造函数中: btn1.setParent(this); btn1.setText("123");
2)通过构造函数传参
.h文件中,public/private作用域下: QPushButton *btn1; .cpp构造函数中: btn1 = new QPushButton(this); btn1->setText("123");
- 现象:由于未对窗口大小进行设置,显示效果不大一样。如使用resize(320, 240);,显示效果都一样的。
1.5 其他API演示
// 创建一个按钮,让btn对象依赖在 本窗口上 btn1.setParent(this); // 显示文本 btn1.setText("123"); // 移动位置 btn1.move(100, 100); // 重新指定按钮大小 btn1.resize(100, 100); // 重置窗口大小 resize(320, 240); // 设置固定窗口大小,不可缩放 setFixedSize(320, 240); // 设置窗口标题 setWindowTitle("Hello!");