TypePHP\Qt
指南
控件
深入
参考
FAQ
  • English
  • 简体中文
GitHub
指南
控件
深入
参考
FAQ
  • English
  • 简体中文
GitHub
  • 指南

    • 指南
    • 安装
    • Qt 的安装与编译
    • 快速上手
    • 项目结构
    • 架构原理
    • 状态与视图
  • 界面

    • 事件与处理器
    • 属性
    • 布局
    • 对话框与系统集成
    • 多窗口、托盘与定时器
    • 增量补丁

属性

属性是控件树节点上的关联数组,第三或第二个参数传进去。

WidgetTree::label('你好', ['id' => 'greeting', 'style' => 'color:red', 'align' => 'center']);

通用属性(所有节点)

属性类型说明
idstring稳定标识,diff 与事件都靠它。你要读写的控件必须给
visiblebool显隐
enabledbool是否可交互
tooltipstring悬停提示
stylestringQt 样式表片段,如 color:#1d4ed8;font-weight:bold;
size[w, h]固定尺寸
min_size / max_size[w, h]尺寸约束
alignstringleft right center
growint在布局中的伸展权重(0 = 不伸展)

容器属性

属性适用说明
titlegroup, tabs, tab标题文本
margin布局类外边距:整数,或 [上, 右, 下, 左]
spacing布局类子项间距
row / colgrid, form网格位置
row_span / col_spangrid跨行/跨列
orientationsplith / v
sizessplit初始分割比例,如 [200, 400]
tab_positiontabstop bottom left right

输入类属性

属性适用说明
text文本类文本内容
placeholderlineedit, textedit占位提示
readonlylineedit, textedit只读
passwordlineedit密码模式(显示为圆点)
clear_buttonlineedit显示清除按钮
max_lengthlineedit最大字符数
wraptextedit自动换行

数值类属性

属性适用说明
value全部数值类当前值
min / max全部数值类范围
stepspin, doublespin, slider步长
decimalsdoublespin小数位
prefix / suffixspin, doublespin前后缀,如 ¥ / %
ticksslider刻度数

列表类属性

属性适用说明
itemscombo, list条目文本列表
currentcombo, list, table, tree, tabs, stack声明式选中,口径见下
columnstable表头文本列表
rowstable行数据(每行是单元格列表)
row_idstable行 id 列表
row_colorstable每行背景色('' = 默认不著色),如 ['#f8d7da', '', '#d4edda']
nodestree树节点
headerstree列标题
headers_visibletable, tree是否显示表头
multilist, table, tree允许多选
select_modetable, tree选择模式
stretch_lasttable最后一列自动伸展
row_heighttable固定行高(像素)。0(默认)表示行高由内容决定 —— 单元格里含 \n 的表格会自动调整行高,多行内容不会被裁掉
checkablelist, table, tree条目带复选框
editablecombo、table可编辑(table 上开启单元格就地编辑并触发 cell 事件)

current 的口径按控件不同

这是最容易踩的地方 —— 同名的 current 在不同控件上收不同类型:

控件current 收什么
table行 id(不给 row_ids 时行 id 就是索引字符串 '0'、'1'…)
tree节点 id(不给 id 时退化成节点文本)
list行索引
combo / tabs / stack索引或文本
// 表格:按行 id 选中
WidgetTree::table(['名称', '数量'], $rows, ['id' => 'tbl', 'row_ids' => ['r1', 'r2'], 'current' => 'r2']);

// 下拉:按文本选中
WidgetTree::combo(['浅色', '深色'], '深色', ['id' => 'theme']);

// 列表:按索引选中
WidgetTree::list(['A', 'B', 'C'], 1, ['id' => 'lst']);

不传 current 时会自动找回选中

重渲染时框架按行 id / 节点 id 找回上一次的选中,所以插行、换数据都不会选中错位。这是 diff 引擎的一部分,见 diff 引擎。

展示类属性

属性适用说明
hreflink链接地址(点击事件里作为 value 上报)
pathimage图片路径
scaled_sizeimage缩放尺寸
boldlabel粗体
font_sizelabel, button字号
checkablebutton按钮可切换
flatbutton无边框按钮
checkedbutton, checkbox, radio勾选状态
defaultbutton默认按钮(回车触发)

未知属性会被忽略

写了不存在的属性不会报错,只是没效果 —— 和未知 id、未知 patch method 的处理一致。这让降级和拼写容错容易,但打错字也不会告诉你,所以要对着这张表核。

用 style 做视觉

style 是 Qt 样式表(QSS)片段,写在节点上:

WidgetTree::label('标题', [
    'id' => 'title',
    'style' => 'font-size:22px;font-weight:bold;color:#1d4ed8;',
])

也可以全局设一次(在 create() 时):

$app->create(['name' => 'MyApp', 'stylesheet' => 'QPushButton { padding: 6px 14px; }']);

尺寸与布局的关系

  • size 是固定尺寸,会覆盖布局的自动计算。
  • grow 是伸展权重 —— 布局有多余空间时按权重分配。grow => 1 的项吃掉所有多余空间。
  • min_size / max_size 是约束,和 grow 配合用。
WidgetTree::hbox([
    WidgetTree::label('侧栏', ['size' => [180, 0]]),      // 固定宽 180
    WidgetTree::textEdit('', ['id' => 'main', 'grow' => 1]), // 占满剩余
]);
在 GitHub 上编辑此页
最后更新: 2026/10/6 03:13
Prev
事件与处理器
Next
布局