通过实现以下的功能进行学习QWidget的相关功能和用法

所有窗口类的基类
Qt 中有 3 个窗口的基类:QWidget、QMainWindow、QDialog
在创建 Qt 工程时,会让我们选择继承自哪一个窗口类
其中,QMainWindow、QDialog 都是继承自 QWidge
所有控件类的基类
Qt 中的控件类(按钮、输入框、单选框等)也属于窗口类
它们的基类也是 QWidget;
可以内嵌到其他窗口的内部,此时需要给其指定父窗口;
可以作为独立的窗口显示,此时不能给其指定父窗口;
因为各种操作很简单就不细讲了,下面只把更换图标过程说明一下,其他直接代码
窗口标题、图标、资源文件
设置和获取窗口的标题,直接使用如下两个函数即可:
// 获取和设置窗口的标题
QString windowTitle() const;
void setWindowTitle(const QString &);
设置窗口的图标,需要一个 QIcon 对象,如下:
// 获取和设置窗口的图标
QIcon windowIcon() const;
void setWindowIcon(const QIcon &icon);
// 构造 QIcon 图标对象
// 有 6 个重载的构造方法,通常我们使用最后一个
// 参数为图标文件的路径
QIcon::QIcon(const QString &fileName);
首先将图标文件 logo_windows.svg,复制到项目目录 QWidgetTest 下的 icon 目录中,如下:
我使用是vs2022,使用qt create 更简单


保存后就生成URL,然后复制URL
窗口位置
// 1、设置窗体的几何信息
// 获取相对于当前窗口父窗口的几何信息:宽高、坐标点信息
const QRect &geometry() const;
void setGeometry(int x, int y, int w, int h);
void setGeometry(const QRect &);
// 2、移动窗口。
// 重新设置窗口的位置
void move(int x, int y);
void move(const QPoint &);
窗口大小
通常,窗口可以拖动其右下角,进行放大和缩小。我们可以设置窗口的最小大小和最大大小;
另外,窗口可以设置为固定大小,这样窗口就不能放大和缩小;
常用的设置大小的函数如下:
// 1、设置窗口尺寸
QSize size() const
void resize(int w, int h);
void resize(const QSize &);
// 2、设置最大尺寸
QSize maximumSize() const;
void setMaximumSize(const QSize &);
void setMaximumSize(int maxw, int maxh);
// 3、设置最小尺寸
QSize minimumSize() const;
void setMinimumSize(const QSize &);
void setMinimumSize(int minw, int minh);
// 4、设置固定尺寸
void QWidget::setFixedSize(const QSize &s);
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);
所有测试代码
#include "QWidgetTest.h"
#include <qdebug.h>
QWidgetTest::QWidgetTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//1.获取窗体的几何信息,采用匿名函数的槽函数,也可以使用普通函数操作,
// 这里为了方便直接使用匿名函数操作
connect(ui.on_getWidthHeight_clicked, &QPushButton::clicked, this, [this]() {
// 获取相对于当前窗口的父窗口的集合信息:宽高、坐标点信息
QRect rect = this->geometry();
qDebug() << "左上角: " << rect.topLeft();
qDebug() << "右上角:" << rect.topRight();
qDebug() << "左下角:" << rect.bottomLeft();
qDebug() << "右下角:" << rect.bottomRight();
qDebug() << "宽度:" << rect.width();
qDebug() << "高度:" << rect.height();
});
// 2. 设置窗口大小为500*500
connect(ui.on_setHeightWidth_clicked, &QPushButton::clicked, this, [this]() {
this->resize(500, 500);
});
// 3. 设置固定大小为600*600
connect(ui.on_setStaticHeightWidth_clicked, &QPushButton::clicked, this, [this]() {
this->setFixedSize(600, 600);
});
// 4. 设置窗口最小大小为400*400
connect(ui.on_setMinHeightWidth_clicked, &QPushButton::clicked, this, [this]() {
this->setMinimumSize(400, 400);
});
// 5.设置窗口最大大小为1000*1000
connect(ui.on_setMaxHeightWidth_clicked, &QPushButton::clicked, this, [this]() {
this->setMaximumSize(1000, 1000);
});
// 6. 移动到窗口(200,100)
connect(ui.on_setMove_clicked, &QPushButton::clicked, this, [this]() {
this->move(100, 100);
});
// 7. 设置窗口标题
connect(ui.on_setWinTitle_clicked, &QPushButton::clicked, this, [this]() {
this->setWindowTitle("测试修改窗口标题");
});
// 8. 设置窗口的icons
connect(ui.on_setIcons_clicked, &QPushButton::clicked, this, [this]() {
this->setWindowIcon(QIcon(":/QIcon/logo_windows.svg"));
});
}
QWidgetTest::~QWidgetTest()
{
}

921

被折叠的 条评论
为什么被折叠?



