?????????本文詳細(xì)的介紹了QTreeView、QTreeWidget控件的各種操作,例如:新建界面、QTreeWidget、QTreeView、控件布局、設(shè)置列、設(shè)置寬高、設(shè)置列表頭、設(shè)置復(fù)選框、設(shè)置圖標(biāo)、添加樹(shù)、刪除樹(shù)、查找樹(shù)、修改樹(shù)、設(shè)置選中、樹(shù)排序、事件、信號(hào)、槽函數(shù)、添加節(jié)點(diǎn)、默認(rèn)選中、.h源文件、cpp源文件、其它文章等等操作。
??????? 實(shí)際開(kāi)發(fā)中,一個(gè)界面上可能包含十幾個(gè)控件,手動(dòng)調(diào)整它們的位置既費(fèi)時(shí)又費(fèi)力。布局管理器可以完成兩件事:自動(dòng)調(diào)整控件的位置,包括控件之間的間距、對(duì)齊等;當(dāng)用戶調(diào)整窗口大小時(shí),位于布局管理器內(nèi)的控件也會(huì)隨之調(diào)整大小,從而保持整個(gè)界面的美觀。
??????? 本系列QT全面詳解文章目前共有二十八篇高質(zhì)量?jī)?nèi)容,本系列文章較為詳細(xì)的講述了QT控件的基礎(chǔ)操作和使用,也謝謝大家的關(guān)注、點(diǎn)贊、收藏。
?本文作者原創(chuàng),轉(zhuǎn)載請(qǐng)附上文章出處與本文鏈接。
QT QTreeView\QTreeWidget控件 使用詳解目錄
1 新建界面
2? QTreeWidget
2.1 控件布局
2.2 設(shè)置列
2.3 設(shè)置寬高
2.4 設(shè)置列表頭
2.5 設(shè)置復(fù)選框
2.6 添加樹(shù)
2.6.1 添加頂層項(xiàng)目
2.6.2 插入頂層項(xiàng)目
2.6.3 添加子項(xiàng)
2.7 刪除樹(shù)
2.7.1 刪除子項(xiàng)目
2.7.2 刪除頂級(jí)條目
2.8 查詢樹(shù)
2.8.1 查詢對(duì)應(yīng)條目
2.8.2 查詢對(duì)應(yīng)序號(hào)
2.9 樹(shù)條目操作
2.9.1 當(dāng)前選中行列
2.9.2 設(shè)置條目選中
2.9.3 設(shè)置選中行
2.9.4 設(shè)置選中列
2.9.5 當(dāng)前選中行 上一個(gè)選中行
2.10 樹(shù)排序
2.10.1 設(shè)置自動(dòng)排序
2.10.2 升序降序
2.11 樹(shù)查找
2.12 清空樹(shù)
2.13 折疊樹(shù)
2.14 展開(kāi)樹(shù)
2.15 滾動(dòng)指定條目
2.16 樹(shù)單擊信號(hào)
2.17 樹(shù)雙擊信號(hào)
2.18 樹(shù)展開(kāi)信號(hào)
2.19 樹(shù)折疊信號(hào)
2.20 列數(shù)據(jù)變化信號(hào)
3 QTreeView
3.1 控件布局
3.2 添加節(jié)點(diǎn)
3.3 設(shè)置圖標(biāo)
3.4 設(shè)置checkBox
3.5 默認(rèn)選中
3.6 單擊信號(hào)
3.7 雙擊信號(hào)
1 新建界面
2? QTreeWidget
2.1 控件布局
QStringList topTitle;
QTreeWidgetItem* treeWidgetItem_1;
QTreeWidgetItem* treeWidgetItem_2;
QTreeWidgetItem* treeWidgetItem_3;
QTreeWidgetItem* treeItem_1;
QTreeWidgetItem* treeItem_2;
QTreeWidgetItem* treeItem_3;
QStringList sTreeList_1,sTreeList_2,sTreeList_3;
QStringList sTreeItemList_1,sTreeItemList_2,sTreeItemList_3;
//創(chuàng)建項(xiàng)目
treeWidgetItem_1 = new QTreeWidgetItem(sTreeList_1);
treeWidgetItem_2 = new QTreeWidgetItem(sTreeList_2);
treeWidgetItem_3 = new QTreeWidgetItem(sTreeList_3);
treeItem_1=new QTreeWidgetItem(sTreeItemList_1);
treeItem_2=new QTreeWidgetItem(sTreeItemList_2);
treeItem_3=new QTreeWidgetItem(sTreeItemList_3);
sTreeList_1 << "頂級(jí)條目0-第1列" << "頂級(jí)條目0-第2列" << "頂級(jí)條目0-第3列" << "頂級(jí)條目0-第4列" << "頂級(jí)條目0-第5列";
sTreeList_2 << "頂級(jí)條目1-第1列" << "頂級(jí)條目1-第2列" << "頂級(jí)條目1-第3列" << "頂級(jí)條目1-第4列" << "頂級(jí)條目1-第5列";
sTreeList_3 << "頂級(jí)條目2-第1列" << "頂級(jí)條目2-第2列" << "頂級(jí)條目2-第3列" << "頂級(jí)條目2-第4列" << "頂級(jí)條目2-第5列";
sTreeItemList_1 << "子條目0-第1列" << "子條目0-第2列" << "子條目0-第3列" << "子條目0-第4列" << "子條目0-第5列";
sTreeItemList_3 << "子條目1-第1列" << "子條目1-第2列" << "子條目1-第3列" << "子條目1-第4列" << "子條目1-第5列";
sTreeItemList_2 << "子條目2-第1列" << "子條目2-第2列" << "子條目2-第3列" << "子條目2-第4列" << "子條目2-第5列";
2.2 設(shè)置列
//設(shè)置列數(shù)
ui->treeWidget->setColumnCount(3);
//獲取列
ui->treeWidget->columnCount();
2.3 設(shè)置寬高
//設(shè)置寬高
//ui->treeWidget->resize(600,300);
2.4 設(shè)置列表頭
topTitle << "0" << "1" << "2" << "3" << "4";
ui->treeWidget->setHeaderLabels(topTitle);
2.5 設(shè)置復(fù)選框
//設(shè)置復(fù)選框 參數(shù)1 復(fù)選框的位置 列序號(hào) Qt::Unchecked 沒(méi)選中 Qt::Checked 選中 Qt::PartiallyChecked 部分選中
treeWidgetItem_2->setCheckState(0,Qt::PartiallyChecked);
2.6 添加樹(shù)
2.6.1 添加頂層項(xiàng)目
//添加一個(gè)頂層項(xiàng)目
ui->treeWidget->addTopLevelItem(treeWidgetItem_1);
ui->treeWidget->addTopLevelItem(treeWidgetItem_2);
2.6.2 插入頂層項(xiàng)目
//插入頂層項(xiàng)目
ui->treeWidget->insertTopLevelItem(0,treeWidgetItem_3);
2.6.3 添加子項(xiàng)
//給項(xiàng)目添加子項(xiàng)
treeWidgetItem_1->addChild(treeItem_1);
treeWidgetItem_1->addChild(treeItem_2);
treeWidgetItem_1->addChild(treeItem_3);
2.6.4 其它添加函數(shù)
??????? 例如 獲取頂層項(xiàng)目總數(shù)
qDebug() << "頂層總數(shù):" << ui->treeWidget->topLevelItemCount();
// 樹(shù)形控件頂級(jí)條目的操作比較類似 QListWidget 的列表?xiàng)l目操作函數(shù)。新建條目之后,可以用如下函數(shù)把條目添加到樹(shù)形控件的頂級(jí)條目列表末尾:
// void QTreeWidget::?addTopLevelItem(QTreeWidgetItem * item) //添加一個(gè)頂級(jí)條目到末尾
// void QTreeWidget::?addTopLevelItems(const QList<QTreeWidgetItem *> & items) //添加多個(gè)頂級(jí)條目到末尾
// 如果希望將條目插入到指定頂級(jí)條目列表的 index 序號(hào)位置,使用如下函數(shù):
// void QTreeWidget::?insertTopLevelItem(int index, QTreeWidgetItem * item)
// void QTreeWidget::?insertTopLevelItems(int index, const QList<QTreeWidgetItem *> & items)
// 樹(shù)形控件所有的頂級(jí)條目父節(jié)點(diǎn)指針都為 NULL (父節(jié)點(diǎn)是指樹(shù)形層次中的節(jié)點(diǎn)關(guān)系,而條目的父控件依然是樹(shù)形控件本身)。
// 添加了頂級(jí)條目之后,可以對(duì)頂級(jí)條目進(jìn)行計(jì)數(shù):
// int QTreeWidget::?topLevelItemCount() const
2.7 刪除樹(shù)
2.7.1 刪除子項(xiàng)目
//刪除子項(xiàng)目
//treeWidgetItem_1->takeChild(2);
2.7.2 刪除頂級(jí)條目
//刪除頂級(jí)條目
//ui->treeWidget->takeTopLevelItem(2);
2.8 查詢樹(shù)
2.8.1 查詢對(duì)應(yīng)條目
//查詢控件對(duì)應(yīng)條目
qDebug() << ui->treeWidget->topLevelItem(1);
2.8.2 查詢對(duì)應(yīng)序號(hào)
//查詢控件頂級(jí)序號(hào)
qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_1);
qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_2);
qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_3);
2.9 樹(shù)條目操作
2.9.1 當(dāng)前選中行列
qDebug() << "當(dāng)前選中行: " << ui->treeWidget->currentItem();
qDebug() << "當(dāng)前選中列: " << ui->treeWidget->currentColumn();
2.9.2 設(shè)置條目選中
// void QTreeWidget::?setCurrentItem(QTreeWidgetItem * item)
// void QTreeWidget::?setCurrentItem(QTreeWidgetItem * item, int column)
2.9.3 設(shè)置選中行
//設(shè)置選中行
//ui->treeWidget->setCurrentItem(treeWidgetItem_1);
2.9.4 設(shè)置選中列
//設(shè)置選中某行某列
ui->treeWidget->setCurrentItem(treeWidgetItem_1,2);
2.9.5 當(dāng)前選中行 上一個(gè)選中行
//當(dāng)前選中行 上一個(gè)選中行
//ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);
2.10 樹(shù)排序
2.10.1 設(shè)置自動(dòng)排序
//ui->treeWidget->isSortingEnabled();
//ui->treeWidget->setSortingEnabled(true);
2.10.2 升序降序
//ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder); //升序
//ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder); //降序
2.11 樹(shù)查找
QString text = "頂級(jí)條目2-第2列";
Qt::MatchFlags flags;
//ui->treeWidget->findItems(text, flags, 0);
bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
qDebug() << "查找: " << isEmpty;
2.12 清空樹(shù)
//清空控件
void MainWindow::on_pushButton_2_clicked()
{
ui->treeWidget->clear();
}
2.13 折疊樹(shù)
//折疊控件
void MainWindow::on_pushButton_3_clicked()
{
ui->treeWidget->collapseItem(treeWidgetItem_1);
}
2.14 展開(kāi)樹(shù)
//展開(kāi)控件
void MainWindow::on_pushButton_4_clicked()
{
ui->treeWidget->expandItem(treeWidgetItem_1);
}
2.15 滾動(dòng)指定條目
//滾動(dòng)到指定條目
void MainWindow::on_pushButton_5_clicked()
{
//void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)
}
2.16 樹(shù)單擊信號(hào)
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
qDebug() << "單擊信號(hào): " << item << "column: " << column;
}
2.17 樹(shù)雙擊信號(hào)
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
qDebug() << "雙擊信號(hào): " << item << "column: " << column;
}
2.18 樹(shù)展開(kāi)信號(hào)
void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item)
{
qDebug() << "展開(kāi)控件:" << item;
}
2.19 樹(shù)折疊信號(hào)
void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item)
{
qDebug() << "折疊信號(hào): " << item;
}
2.20 列數(shù)據(jù)變化信號(hào)
void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column)
{
qDebug() << "列數(shù)據(jù)變化: " << item;
}
3 QTreeView
3.1 控件布局
QStandardItemModel *standardModel;
QStandardItem *standardItem;
//設(shè)置表頭
standardModel = new QStandardItemModel(this);
//設(shè)置表頭隱藏
//ui->treeView->setHeaderHidden(true);
//設(shè)置表頭
standardModel->setHorizontalHeaderLabels(QStringList()<<"0"<<"1"<<"2");
//設(shè)置model
ui->treeView->setModel(standardModel);
//設(shè)置展開(kāi)
ui->treeView->expandAll();
3.2 添加節(jié)點(diǎn)
//添加節(jié)點(diǎn)
standardItem = new QStandardItem("頂級(jí)條目-0");
standardModel->setItem(0,0,standardItem);
QStandardItem *item00 = new QStandardItem("子條目0");
QStandardItem *item10 = new QStandardItem("子條目1");
QStandardItem *item20 = new QStandardItem("子條目2");
QStandardItem *item01 = new QStandardItem("0-0");
QStandardItem *item11 = new QStandardItem("0-1");
QStandardItem *item21 = new QStandardItem("0-2");
QStandardItem *item02 = new QStandardItem("0-0-0");
QStandardItem *item12 = new QStandardItem("0-1-1");
QStandardItem *item22 = new QStandardItem("0-2-2");
standardModel->item(0,0)->setChild(0,0,item00);
standardModel->item(0,0)->setChild(1,0,item10);
standardModel->item(0,0)->setChild(2,0,item20);
standardModel->item(0,0)->setChild(0,1,item01);
standardModel->item(0,0)->setChild(1,1,item11);
standardModel->item(0,0)->setChild(2,1,item21);
standardModel->item(0,0)->setChild(0,2,item02);
standardModel->item(0,0)->setChild(1,2,item12);
standardModel->item(0,0)->setChild(2,2,item22);
QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"頂級(jí)條目-1");
standardModel->setItem(1,0,item2);
QStandardItem *item200 = new QStandardItem("子條目0");
QStandardItem *item210 = new QStandardItem("子條目1");
QStandardItem *item220 = new QStandardItem("子條目2");
QStandardItem *item201 = new QStandardItem("1-0");
QStandardItem *item211 = new QStandardItem("1-1");
QStandardItem *item221 = new QStandardItem("1-2");
QStandardItem *item202 = new QStandardItem("1-0-0");
QStandardItem *item212 = new QStandardItem("1-1-1");
QStandardItem *item222 = new QStandardItem("1-2-2");
standardModel->item(1,0)->setChild(0,0,item200);
standardModel->item(1,0)->setChild(1,0,item210);
standardModel->item(1,0)->setChild(2,0,item220);
standardModel->item(1,0)->setChild(0,1,item201);
standardModel->item(1,0)->setChild(1,1,item211);
standardModel->item(1,0)->setChild(2,1,item221);
standardModel->item(1,0)->setChild(0,2,item202);
standardModel->item(1,0)->setChild(1,2,item212);
standardModel->item(1,0)->setChild(2,2,item222);
3.3 設(shè)置圖標(biāo)
QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"頂級(jí)條目-1");
3.4 設(shè)置checkBox
//設(shè)置節(jié)點(diǎn)帶checkBox
standardModel->item(0,0)->setCheckable(true);
standardModel->item(0,0)->setCheckState(Qt::Checked);
3.5 默認(rèn)選中
//設(shè)置默認(rèn)選中第幾行
QModelIndex index = standardModel->item(1,0)->index();
ui->treeView->setCurrentIndex(index);
3.6 單擊信號(hào)
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
qDebug() << "單擊信號(hào) index: " << index;
}
3.7 雙擊信號(hào)
void MainWindow::on_treeView_doubleClicked(const QModelIndex &index)
{
qDebug() << "雙擊信號(hào) index: " << index;
}
4 其它文章
QT TextEdit控件_雙子座斷點(diǎn)的博客-CSDN博客_qt textedit
QT QComboBox使用詳解_雙子座斷點(diǎn)的博客-CSDN博客
QT QtableView操作詳解_雙子座斷點(diǎn)的博客-CSDN博客_qtableview增刪改查
Qt QStandardItemModel(1.超級(jí)詳細(xì)用法)_雙子座斷點(diǎn)的博客-CSDN博客_qstandardmodel
Qt QStandardItemModel(2.超級(jí)詳細(xì)函數(shù))_雙子座斷點(diǎn)的博客-CSDN博客_qstandarditemmodel點(diǎn)擊事件
QT QRadioButton使用詳解_雙子座斷點(diǎn)的博客-CSDN博客_qt radiobutton
QT QLineEdit使用詳解_雙子座斷點(diǎn)的博客-CSDN博客_qt qlineedit
Qt QMessageBox使用詳解_雙子座斷點(diǎn)的博客-CSDN博客_qt message
QChart折線圖、餅狀圖、條形圖、曲線圖_雙子座斷點(diǎn)的博客-CSDN博客_qchart樣式
QChart屬性詳解_雙子座斷點(diǎn)的博客-CSDN博客_setanimationoptions
QCharts QValueAxis使用_雙子座斷點(diǎn)的博客-CSDN博客_qvalueaxis
Qt 5 等待提示框(開(kāi)源 動(dòng)態(tài)圖)_雙子座斷點(diǎn)的博客-CSDN博客_qt 等待對(duì)話框
QtDataVisualization 數(shù)據(jù)3D可視化_雙子座斷點(diǎn)的博客-CSDN博客_qtdatavisualizatio
QT QSpinBox 整數(shù)計(jì)數(shù)器控件 使用詳解_雙子座斷點(diǎn)的博客-CSDN博客
QT QDoubleSpinBox 浮點(diǎn)計(jì)數(shù)器控件(使用詳解)_雙子座斷點(diǎn)的博客-CSDN博客_qdoublespinbox信號(hào)槽
QT QSlider、QHorizontalSlider、QVerticalSlider 控件 使用詳解_雙子座斷點(diǎn)的博客-CSDN博客_qslider設(shè)置步長(zhǎng)
QT QTabWidget 控件 使用詳解_雙子座斷點(diǎn)的博客-CSDN博客
QT QCalendarWidget控件 使用詳解_雙子座斷點(diǎn)的博客-CSDN博客
QT QStackedWidget 控件 使用詳解_雙子座斷點(diǎn)的博客-CSDN博客
QT QVBoxLayout 垂直布局控件_雙子座斷點(diǎn)的博客-CSDN博客
QT QHBoxLayout 水平布局控件_雙子座斷點(diǎn)的博客-CSDN博客
QT QGridLayout網(wǎng)格布局控件_雙子座斷點(diǎn)的博客-CSDN博客文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-614562.html
QT QVerticalSpacer 彈簧控件_雙子座斷點(diǎn)的博客-CSDN博客
QT QHorizontalSpacer彈簧控件_雙子座斷點(diǎn)的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-614562.html
到了這里,關(guān)于QT QTreeView\QTreeWidget控件 使用詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!