当然,我们可以为你的代码添加详细的注释,以便更好地理解每一部分的作用。下面是带有详细注释的代码:
cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVBoxLayout> // 包含 QVBoxLayout 类,用于布局管理
// MainWindow 构造函数
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), // 初始化基类 QMainWindow
ui(new Ui::MainWindow) // 初始化 UI 设计器生成的类
{
ui->setupUi(this); // 设置 UI
#if 0
// 使用 QStringList 的 append 方法设置表头标签
QStringList labels;
labels.append("姓名");
labels.append("年龄");
labels.append("职业");
// 设置表头标签
ui->treeWidget->setHeaderLabels(labels);
// 创建一个新的 QTreeWidgetItem,并设置其文本
QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget);
item->setText(0, "zheng"); // 设置姓名列
item->setText(1, "24"); // 设置年龄列
item->setText(2, "musicplayer"); // 设置职业列
// 将创建的项添加到 QTreeWidget 中
ui->treeWidget->addTopLevelItem(item);
#else
// 直接使用 QStringList 的构造函数设置表头标签
ui->treeWidget->setHeaderLabels(QStringList() << "姓名" << "年龄" << "职业");
// 创建一个新的 QTreeWidgetItem,并设置其文本
ui->treeWidget->addTopLevelItem(new QTreeWidgetItem(QStringList()
<< "zheng" // 姓名列
<< "24" // 年龄列
<< "musicplayer")); // 职业列
#endif
// 创建一个 QVBoxLayout 布局管理器
QVBoxLayout *layout = new QVBoxLayout;
// 将 QTreeWidget 添加到布局中
layout->addWidget(ui->treeWidget);
// 设置布局对齐方式为居中
layout->setAlignment(Qt::AlignCenter);
// 创建一个新的中心部件,并设置布局
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(layout);
// 设置中心部件
setCentralWidget(centralWidget);
}
// MainWindow 析构函数
MainWindow::~MainWindow()
{
delete ui; // 释放 UI 设计器生成的类的内存
}
代码说明
-
构造函数:
- 初始化基类
QMainWindow
和 UI 设计器生成的类Ui::MainWindow
。 - 调用
ui->setupUi(this)
来设置 UI。
- 初始化基类
-
表头标签设置:
- 使用
QStringList
的append
方法或构造函数来设置表头标签。 - 调用
ui->treeWidget->setHeaderLabels
设置QTreeWidget
的表头。
- 使用
-
添加顶层项:
- 创建一个新的
QTreeWidgetItem
,并设置其文本。 - 使用
addTopLevelItem
方法将新创建的项添加到QTreeWidget
中。
- 创建一个新的
-
布局管理:
- 创建一个
QVBoxLayout
布局管理器。 - 将
QTreeWidget
添加到布局中。 - 设置布局对齐方式为居中。
- 创建一个新的中心部件,并设置布局。
- 设置中心部件为
MainWindow
的中心部件。
- 创建一个
-
析构函数:
- 释放 UI 设计器生成的类的内存。
居中显示文本
如果你想让 QTreeWidget
中的文本居中显示,可以在添加项之后设置每一列的文本对齐方式:
cpp
#if 0
// ...
#else
// ...
// 创建一个新的 QTreeWidgetItem,并设置其文本
QTreeWidgetItem *item = new QTreeWidgetItem(QStringList()
<< "zheng"
<< "24"
<< "musicplayer");
// 设置每一列的文本对齐方式为居中
for (int i = 0; i < item->columnCount(); ++i) {
item->setTextAlignment(i, Qt::AlignCenter);
}
// 将创建的项添加到 QTreeWidget 中
ui->treeWidget->addTopLevelItem(item);
#endif
通过这种方式,你可以确保 QTreeWidget
中的所有文本都居中显示。