以下是使用 QTreeWidget 的基本步骤和示例代码:
1. 基本设置
#include <QTreeWidget>
#include <QTreeWidgetItem>
// 创建 QTreeWidget
QTreeWidget *treeWidget = new QTreeWidget(this);
// 设置列数
treeWidget->setColumnCount(2);
// 设置表头
QStringList headers;
headers << "名称" << "类型";
treeWidget->setHeaderLabels(headers);
// 设置表头显示
treeWidget->setHeaderHidden(false); // 显示表头
2. 添加数据项
// 添加根节点
QTreeWidgetItem *rootItem = new QTreeWidgetItem(treeWidget);
rootItem->setText(0, "根节点");
rootItem->setText(1, "文件夹");
// 添加子节点
QTreeWidgetItem *childItem1 = new QTreeWidgetItem(rootItem);
childItem1->setText(0, "子节点1");
childItem1->setText(1, "文件");
QTreeWidgetItem *childItem2 = new QTreeWidgetItem(rootItem);
childItem2->setText(0, "子节点2");
childItem2->setText(1, "文件");
// 展开所有节点
treeWidget->expandAll();
3. 常用设置选项
// 设置选择模式
treeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
// 设置编辑模式
treeWidget->setEditTriggers(QAbstractItemView::DoubleClicked |
QAbstractItemView::EditKeyPressed);
// 设置交替行颜色
treeWidget->setAlternatingRowColors(true);
// 设置拖拽支持
treeWidget->setDragEnabled(true);
treeWidget->setAcceptDrops(true);
treeWidget->setDropIndicatorShown(true);
// 设置图标
QIcon folderIcon(":/icons/folder.png");
rootItem->setIcon(0, folderIcon);
QIcon fileIcon(":/icons/file.png");
childItem1->setIcon(0, fileIcon);
4. 信号槽连接
// item点击信号
connect(treeWidget, &QTreeWidget::itemClicked,
[](QTreeWidgetItem *item, int column) {
qDebug() << "点击了:" << item->text(0) << "列:" << column;
});
// item双击信号
connect(treeWidget, &QTreeWidget::itemDoubleClicked,
[](QTreeWidgetItem *item, int column) {
qDebug() << "双击了:" << item->text(0);
});
// selection改变信号
connect(treeWidget->selectionModel(), &QItemSelectionModel::selectionChanged,
[](const QItemSelection &selected, const QItemSelection &deselected) {
if (!selected.indexes().isEmpty()) {
QModelIndex index = selected.indexes().first();
qDebug() << "选中了:" << index.data().toString();
}
});
5. 完整示例
void MainWindow::setupTreeWidget()
{
// 创建树控件
treeWidget = new QTreeWidget(this);
// 基本设置
treeWidget->setColumnCount(3);
QStringList headers;
headers << "名称" << "大小" << "修改日期";
treeWi dget -> setHeaderLabels(headers);
// 添加数据
addSampleData();
//布局
setCentral Widget(tree Widget );
}
void MainWindow::addSampleData()
{
//添加根节点
auto* root= new Tree Wi d get Item ( tree Wi d get );
root -> set Text ( ,"我的电脑");
//添加驱动器
auto* cDrive= new Tree Wi d get Item ( root );
cDrive -> set Text ( ,"C盘");
cDrive -> set Text ( ,"500 GB");
auto* dDrive= new Tree Wi d get Item ( root );
dDrive -> set Text ( ,"D盘");
dDrive -> set Text ( ,"1 TB");
//展开
tree Wi d get -> expand All();
}
这些是 Q Tree Wi d get的基本使用方法,可以根据具体需求进行扩展和定制。
内容由零声教学AI助手提供,问题来源于学员提问