Qt C++ GUI 函数参数速查手册:基础与布局
一:窗口与顶级属性 (Window & Top-Level Properties)
这部分函数,决定了“窗口”的整体风格和基础行为。
-
setWindowFlags(Qt::WindowFlags flags)
flags
: 一个或多个Qt::
枚举值的组合,用|
连接。- 作用: 定义窗口的整体行为和外观(如无边框、置顶)。
- 示例:
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
// 无边框且置顶。
-
setWindowTitle(const QString &title)
title
: 要显示的窗口标题文本。- 作用: 设置窗口标题栏的文字。
-
setWindowIcon(const QIcon &icon)
icon
:QIcon
对象,通常由资源路径创建。- 作用: 设置窗口标题栏和任务栏的图标。
- 示例:
setWindowIcon(QIcon(":/a/app_icon.png"));
-
setStyleSheet(const QString &styleSheet)
styleSheet
: 一个包含 QSS 代码的字符串。- 作用: 为控件和其子控件应用层叠样式表。
- 示例:
this->setStyleSheet("QDialog { background-color: #042739; }");
-
show()
: 显示窗口(非模态)。调用后,代码会继续往下执行。 -
exec()
: 显示模态对话框。窗口关闭前,代码会阻塞在此处,并返回一个结果(如QDialog::Accepted
)。 -
close()
: 关闭窗口。会触发一个closeEvent
,可以被拦截。
第二章:控件创建与配置 (Widget Creation & Configuration)
-
new QLabel()
/new QPushButton()
/new QLineEdit()
: 创建控件实例。 -
setPixmap(const QPixmap &pixmap)
pixmap
: 一个QPixmap
图片对象。- 作用: 在
QLabel
上显示图片。 - 链式调用: 常与
.scaled()
配合使用。 - 示例:
label->setPixmap(QPixmap(":/a/logo.png").scaled(64, 64, Qt::KeepAspectRatio));
-
setFixedSize(int width, int height)
width
,height
: 固定的宽度和高度(像素)。- 作用: 锁定控件尺寸,禁止布局系统改变它。
-
setEchoMode(QLineEdit::EchoMode mode)
mode
:QLineEdit::
枚举值,如Password
。- 作用: 控制
QLineEdit
的文本回显方式。 - 示例:
setEchoMode(QLineEdit::Password);
// 显示为密码黑点。
-
setObjectName(const QString &name)
name
: 一个在程序中唯一的字符串ID。- 作用: 为QSS的ID选择器 (
#name
) 提供目标,实现精准样式设置。
第三章:核心灵魂:布局管理 (Layout Management)
3.1 创建与应用
QLayout(QWidget *parent)
parent
: 指向要应用此布局的父控件的指针。- 作用: 创建布局并立即将其设置给
parent
控件。 - 示例:
QVBoxLayout* vLayout = new QVBoxLayout(this);
// 为当前窗口设置垂直布局。
3.2 添加内容
-
addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = {})
widget
: 要添加的控件指针。stretch
: 【可选】伸展系数,0
表示不伸展。alignment
: 【可选】此控件在布局单元格内的独立对齐方式。
-
addLayout(QLayout *layout, int stretch = 0)
layout
: 要嵌套的子布局指针。stretch
: 【可选】此子布局的整体伸展系数。
-
addSpacing(int size)
size
: 固定的空白区域大小(像素)。- 作用: 添加一个固定大小的、不可见的间距。
-
addStretch(int stretch = 1)
stretch
: 伸展系数,决定了它在分配额外空间时所占的比例。- 作用: 添加一个可伸缩的“弹簧”,用于对齐和填充留白。
3.3 控制空间
-
setSpacing(int spacing)
spacing
: 布局内所有相邻项之间的统一间距(像素)。
-
setContentsMargins(int left, int top, int right, int bottom)
left
,top
,right
,bottom
: 布局内容距离其四条边的距离(像素)。
-
setAlignment(Qt::Alignment alignment)
alignment
:Qt::
枚举值,定义布局内所有项的整体对齐方式。- 作用: 控制宏观对齐。
- 示例:
mainLayout->setAlignment(Qt::AlignCenter);
// 内部所有模块水平居中。
3.4 动态修改
removeWidget(QWidget *widget)
widget
: 要从布局中移除的控件指针。- 作用: 将控件从布局的管理中移除,但不会
delete
这个控件。移除后通常需要调用widget->setParent(nullptr)
或widget->hide()
。