雖然TreeWidget
組件可以實現多節點的增刪改查,但多節點操作顯然很麻煩,在一般的應用場景中基本上只使用一層結構即可解決大部分開發問題,TreeWidget
組件通常可配合TabWidget
組件,實現一個類似于樹形菜單欄的功能,當用戶點擊菜單欄中的選項時則會跳轉到不同的頁面上。
首先在Qt的Ui編輯界面左側加入TreeWidget
組件,右側加入TabWidget
組件,將頁面中的TabWidget
組件增加指定頁,效果如下。
在MainWindow::MainWindow
主函數中我們對其中的兩個組件進行初始化操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QStyleFactory> MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui( new Ui::MainWindow) { ui->setupUi( this ); ui->treeWidget->clear(); ui->treeWidget->setColumnCount(1); ui->treeWidget->setHeaderHidden( true ); ui->tabWidget->tabBar()->hide(); // 增加線條 ui->treeWidget->setStyle(QStyleFactory::create( "windows" )); // ---------------------------------------------------------- // By: LyShark // 創建 [系統設置] 父節點 QTreeWidgetItem *system_setup = new QTreeWidgetItem(ui->treeWidget,QStringList(QString( "系統位置" ))); system_setup->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsAutoTristate); // 給父節點添加子節點 QTreeWidgetItem *system_setup_child_node_1 = new QTreeWidgetItem(system_setup); system_setup_child_node_1->setText(0, "修改密碼" ); QTreeWidgetItem *system_setup_child_node_2 = new QTreeWidgetItem(system_setup); system_setup_child_node_2->setText(0, "設置菜單" ); // ---------------------------------------------------------- // https://www.cnblogs.com/lyshark // 創建 [頁面布局] 父節點 QTreeWidgetItem *page_layout = new QTreeWidgetItem(ui->treeWidget,QStringList(QString( "頁面布局" ))); page_layout->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsAutoTristate); QTreeWidgetItem *page_layout_clild_1 = new QTreeWidgetItem(page_layout); page_layout_clild_1->setText(0, "頁面配置" ); QTreeWidgetItem *page_layout_clild_2 = new QTreeWidgetItem(page_layout); page_layout_clild_2->setText(0, "頁面參數" ); ui->treeWidget->expandAll(); } MainWindow::~MainWindow() { delete ui; } |
接著增加TreeWidget
組件的右鍵點擊事件,當右鍵點擊節點時,先判斷節點是哪一個,并自動將TabWidget
組件切換到指定的頁上。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// 當treeWidget空間雙擊后根據不同的菜單項選擇不同的TabView頁 void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column) { QString str = item->text(column); if (str == "修改密碼" ) { ui->tabWidget->setCurrentIndex(0); } if (str == "設置菜單" ) { ui->tabWidget->setCurrentIndex(1); } if (str == "頁面配置" ) { ui->tabWidget->setCurrentIndex(2); } if (str == "頁面參數" ) { ui->tabWidget->setCurrentIndex(3); } } |
代碼實現起來很簡單,具體實現效果如下所示:
文章出處:https://www.cnblogs.com/lyshark
到此這篇關于C/C++ Qt Tree與Tab組件實現分頁菜單的文章就介紹到這了,更多相關C/C++ Qt Tree與Tab組件實現分頁菜單內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/LyShark/p/15623844.html