Qt控件——布局QWidget

目录

一、QWidget介绍

二、如何显示QWidget窗体

1、添加一个QWidget窗口类

2、显示新的QWidget窗口

三、常用的属性和方法

1、窗口位置

2、窗口大小

3、窗口的标题和图标

四、案例

ui界面

 核心代码


一、QWidget介绍

Qt 中有 3 个窗口的基类:QWidgetQMainWindowQDialog

在创建 Qt 工程时,会让我们选择继承自哪一个窗口类

其中,QMainWindowQDialog 都是继承自 QWidget

Qt 中的控件类(按钮、输入框、单选框等)也属于窗口类

它们的基类也是 QWidget

二、如何显示QWidget窗体

1、添加一个QWidget窗口类

首先,右键单击【QWidgetTest】,点击【添加新文件…】

选择【Qt】->【Qt 设计师界面类】

 选择【Widget】,然后下一步

 输入类名,然后点击下一步

 点击完成之后,就可以将三个文件添加到项目中,并且自动在 .pro 项目文件中,添加了对应的行,如下:

2、显示新的QWidget窗口

为了便于显示,打开 sub.ui 设计师界面, 拖放一个按钮,如下:

 然后来到 widget.cpp 文件中,添加如下代码,来显示 Sub 窗口:

三、常用的属性和方法

1、窗口位置

// 1、设置窗体的几何信息
// 获取相对于当前窗口父窗口的几何信息:宽高、坐标点信息
const QRect &geometry() const;
void setGeometry(int x, int y, int w, int h);

// 2、移动窗口。
// 重新设置窗口的位置
void move(int x, int y);

2、窗口大小

// 1、设置窗口尺寸
QSize size() const
void resize(int w, int h);

// 2、设置最大尺寸
QSize maximumSize() const;
void setMaximumSize(int maxw, int maxh);

// 3、设置最小尺寸
QSize minimumSize() const;
void setMinimumSize(int minw, int minh);

// 4、设置固定尺寸
void QWidget::setFixedSize(int w, int h);

// 5、单独设置窗口的高度
int height() const;
int minimumHeight() const;
int maximumHeight() const;

void setFixedHeight(int h);
void setMaximumHeight(int maxh);
void setMinimumHeight(int minh);

// 6、单独设置窗口的宽度
int width() const;
int minimumWidth() const;
int maximumWidth() const;

void setFixedWidth(int w);
void setMaximumWidth(int maxw);
void setMinimumWidth(int minw);

3、窗口的标题和图标

// 获取和设置窗口的标题
QString windowTitle() const;
void setWindowTitle(const QString &);
// 获取和设置窗口的图标
QIcon windowIcon() const;
void setWindowIcon(const QIcon &icon);

 首先将图标文件 ping.ico,复制到项目目录下的 icon 目录中,如下:

 在项目上右键,选择【添加新文件…】

选择【Qt Resource File】,这样就会在项目中,添加一个 .qrc 的文件

然后,点击 “Add Prefix”,添加前缀:

 接下来就可以拷贝这个 clock.ico 的资源路径,在程序中使用了

四、案例

ui界面

 核心代码

#include "widget.h"
#include "ui_widget.h"
#include "sub.h"
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

//    sub* subwidget  = new sub();
//    subwidget->setWindowTitle("sub");
//    subwidget->show();

//    sub* subwidget  = new sub(this);
//    subwidget->setWindowTitle("sub");
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_btn_weizhi_clicked()
{
    qDebug() <<"-----------------------------";
    QRect rect = this->geometry();
    qDebug() << "左上角: " << rect.topLeft();
    qDebug() << "右上角: " << rect.topRight();
    qDebug() << "左下角: " << rect.bottomLeft();
    qDebug() << "右下角: " << rect.bottomRight();
    qDebug() << "宽度: " << rect.width();
    qDebug() << "高度: " << rect.height();
}

void Widget::on_btn_resize_clicked()
{
    this->resize(400,400);
}

void Widget::on_btn_guding_clicked()
{
    this->setFixedSize(500,500);
}

void Widget::on_btn_min_clicked()
{
    this->setMinimumSize(300,300);
}

void Widget::on_btn_max_clicked()
{
    this->setMaximumSize(600,600);
}

void Widget::on_btn_move_clicked()
{
    this->move(100,100);
}

void Widget::on_btn_biaoti_clicked()
{
    this->setWindowTitle("hahaha");
}

void Widget::on_btn_tubiao_clicked()
{
    this->setWindowIcon(QIcon(":/icon/ping.ico"));
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琪琪猫不会嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值