【Qt教程】1.4 - Qt5第一个控件 按钮QPushButton 指定父对象

目录

一、按钮 QPushButton

1.1 按钮帮助手册

1.2 按钮控件常用API

1.3 创建一个按钮

1.4 指定父对象 / 设置父窗口

1.5 其他API演示


一、按钮 QPushButton

1.1 按钮帮助手册

QPushButton Class

The QPushButton widget provides a command button. More...

Header:

#include <QPushButton>

qmake:

QT += widgets

Inherits:

QAbstractButton

Inherited By:

QCommandLinkButton

使用按钮,需要包含头文件 #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!");

 

 

 


版权声明:本文为Mark_md原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。