Qt怎样制作树形工具栏
时间: 2024-03-04 14:49:18 浏览: 166
Qt实现自定义树状导航栏
5星 · 资源好评率100%
要制作树形工具栏,可以使用QToolBox和QTreeWidget组件,具体步骤如下:
1. 创建QToolBox对象,并设置其布局方式为QToolBox::Style::ToolBoxStyle
```
QToolBox *toolBox = new QToolBox(this);
toolBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
toolBox->setMinimumSize(200, 200);
toolBox->setMaximumSize(400, 400);
toolBox->setStyleSheet("QToolBox::tab { padding: 5px; } QToolBox::tab:selected { background-color: #ccc; }");
toolBox->setFrameStyle(QFrame::NoFrame);
toolBox->setLayout(new QStackedLayout);
```
2. 在QToolBox中添加QTreeWidget节点,并将其添加到QStackedLayout中
```
QTreeWidget *treeWidget = new QTreeWidget(this);
treeWidget->setHeaderHidden(true);
treeWidget->setColumnCount(1);
treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
QTreeWidgetItem *item1 = new QTreeWidgetItem(treeWidget);
item1->setText(0, "Item 1");
item1->setIcon(0, QIcon(":/icons/1.png"));
QTreeWidgetItem *item2 = new QTreeWidgetItem(treeWidget);
item2->setText(0, "Item 2");
item2->setIcon(0, QIcon(":/icons/2.png"));
QTreeWidgetItem *item3 = new QTreeWidgetItem(treeWidget);
item3->setText(0, "Item 3");
item3->setIcon(0, QIcon(":/icons/3.png"));
treeWidget->addTopLevelItem(item1);
treeWidget->addTopLevelItem(item2);
treeWidget->addTopLevelItem(item3);
toolBox->layout()->addWidget(treeWidget);
```
在上述代码中,首先创建了一个QToolBox对象,并设置其样式、大小、布局等属性。然后创建了一个QTreeWidget对象,并添加了几个QTreeWidgetItem节点,并将其添加到QStackedLayout中。
3. 为QTreeWidget节点添加QAction
参考前面的回答,为QTreeWidget节点添加QAction。
4. 切换QToolBox显示的节点
```
connect(treeWidget, &QTreeWidget::itemClicked, this, [=](QTreeWidgetItem *item, int column) {
toolBox->setCurrentIndex(treeWidget->indexOfTopLevelItem(item));
});
```
在上述代码中,通过绑定QTreeWidget的itemClicked信号,切换QToolBox显示的节点。
最后,将QToolBox添加到窗口中即可。
阅读全文