QTreeWidget 類提供使用預定義樹模型的樹視圖。 更多...
| 頭: |
#include <QTreeWidget>
|
| CMake: |
find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
|
| qmake: |
QT += widgets
|
| 繼承: | QTreeView |
(從 6.10 起)
supportedDragActions
: Qt::DropActions
| QTreeWidget (QWidget * parent = nullptr) | |
| virtual | ~QTreeWidget () |
| void | addTopLevelItem (QTreeWidgetItem * item ) |
| void | addTopLevelItems (const QList<QTreeWidgetItem *> & items ) |
| void | closePersistentEditor (QTreeWidgetItem * item , int column = 0) |
| int | columnCount () const |
| int | currentColumn () const |
| QTreeWidgetItem * | currentItem () const |
| void | editItem (QTreeWidgetItem * item , int column = 0) |
| QList<QTreeWidgetItem *> | findItems (const QString & text , Qt::MatchFlags flags , int column = 0) const |
| QTreeWidgetItem * | headerItem () const |
| QModelIndex | indexFromItem (const QTreeWidgetItem * item , int column = 0) const |
| int | indexOfTopLevelItem (QTreeWidgetItem * item ) const |
| void | insertTopLevelItem (int index , QTreeWidgetItem * item ) |
| void | insertTopLevelItems (int index , const QList<QTreeWidgetItem *> & items ) |
| QTreeWidgetItem * | invisibleRootItem () const |
| bool | isPersistentEditorOpen (QTreeWidgetItem * item , int column = 0) const |
| QTreeWidgetItem * | itemAbove (const QTreeWidgetItem * item ) const |
| QTreeWidgetItem * | itemAt (const QPoint & p ) const |
| QTreeWidgetItem * | itemAt (int x , int y ) const |
| QTreeWidgetItem * | itemBelow (const QTreeWidgetItem * item ) const |
| QTreeWidgetItem * | itemFromIndex (const QModelIndex & index ) const |
| QWidget * | itemWidget (QTreeWidgetItem * item , int column ) const |
| void | openPersistentEditor (QTreeWidgetItem * item , int column = 0) |
| void | removeItemWidget (QTreeWidgetItem * item , int column ) |
| QList<QTreeWidgetItem *> | selectedItems () const |
| void | setColumnCount (int columns ) |
| void | setCurrentItem (QTreeWidgetItem * item ) |
| void | setCurrentItem (QTreeWidgetItem * item , int column ) |
| void | setCurrentItem (QTreeWidgetItem * item , int column , QItemSelectionModel::SelectionFlags command ) |
| void | setHeaderItem (QTreeWidgetItem * item ) |
| void | setHeaderLabel (const QString & label ) |
| void | setHeaderLabels (const QStringList & labels ) |
| void | setItemWidget (QTreeWidgetItem * item , int column , QWidget * widget ) |
| void | setSupportedDragActions (Qt::DropActions actions ) |
| int | sortColumn () const |
| void | sortItems (int column , Qt::SortOrder order ) |
| Qt::DropActions | supportedDragActions () const |
| QTreeWidgetItem * | takeTopLevelItem (int index ) |
| QTreeWidgetItem * | topLevelItem (int index ) const |
| int | topLevelItemCount () const |
| QRect | visualItemRect (const QTreeWidgetItem * item ) const |
| virtual void | setSelectionModel (QItemSelectionModel * selectionModel ) override |
| void | clear () |
| void | collapseItem (const QTreeWidgetItem * item ) |
| void | expandItem (const QTreeWidgetItem * item ) |
| void | scrollToItem (const QTreeWidgetItem * item , QAbstractItemView::ScrollHint hint = EnsureVisible) |
| void | currentItemChanged (QTreeWidgetItem * current , QTreeWidgetItem * previous ) |
| void | itemActivated (QTreeWidgetItem * item , int column ) |
| void | itemChanged (QTreeWidgetItem * item , int column ) |
| void | itemClicked (QTreeWidgetItem * item , int column ) |
| void | itemCollapsed (QTreeWidgetItem * item ) |
| void | itemDoubleClicked (QTreeWidgetItem * item , int column ) |
| void | itemEntered (QTreeWidgetItem * item , int column ) |
| void | itemExpanded (QTreeWidgetItem * item ) |
| void | itemPressed (QTreeWidgetItem * item , int column ) |
| void | itemSelectionChanged () |
| virtual bool | dropMimeData (QTreeWidgetItem * parent , int index , const QMimeData * data , Qt::DropAction action ) |
| virtual QMimeData * | mimeData (const QList<QTreeWidgetItem *> & items ) const |
| virtual QStringList | mimeTypes () const |
| virtual Qt::DropActions | supportedDropActions () const |
| virtual void | dropEvent (QDropEvent * event ) override |
| virtual bool | event (QEvent * e ) override |
QTreeWidget 類是提供標準樹 Widget 的方便類,采用基於項的經典接口類似使用 QListView 類在 Qt 3。此類基於 Qt 模型/視圖體係結構,並使用默認模型來保持項,其中每個項是 QTreeWidgetItem .
不需要靈活模型/視圖框架的開發者可以使用此類,非常輕鬆地創建簡單分層列錶。更靈活方式涉及組閤 QTreeView 采用標準項模型。這允許將數據存儲與其錶示分開。
以最簡單形式,可以按以下方式構造樹 Widget:
QTreeWidget *treeWidget = new QTreeWidget(); treeWidget->setColumnCount(1); QList<QTreeWidgetItem *> items; for (int i = 0; i < 10; ++i) items.append(new QTreeWidgetItem(static_cast<QTreeWidget *>(nullptr), QStringList(QString("item: %1").arg(i)))); treeWidget->insertTopLevelItems(0, items);
在可以把項添加到樹 Widget 之前,必須設置列數采用 setColumnCount ()。這允許每項擁有一個或多個標簽或其它裝飾。可以找到所用列數采用 columnCount () 函數。
樹可以擁有包含 Widget 每列區間的 Header (頭)。為每區間設置標簽的最簡單方式是通過提供字符串列錶采用 setHeaderLabels (),但可以構造自定義 Header (頭) 采用 QTreeWidgetItem 並插入樹采用 setHeaderItem () 函數。
樹中的項可以根據預定義排序次序按列排序。若排序被啓用,用戶可以通過點擊列 Header (頭) 排序項。可以啓用或禁用排序通過調用 setSortingEnabled ()。 isSortingEnabled () 函數指示是否有啓用排序。
另請參閱 QTreeWidgetItem , QTreeWidgetItemIterator , QTreeView ,和 模型/視圖編程 .
此特性保持在樹 Widget 中顯示的列數
默認情況下,此特性擁有 1 值。
訪問函數:
| int | columnCount () const |
| void | setColumnCount (int columns ) |
[since 6.10]
supportedDragActions
:
Qt::DropActions
此特性保持由此視圖支持的拖拽動作
此特性在 Qt 6.10 引入。
訪問函數:
| Qt::DropActions | supportedDragActions () const |
| void | setSupportedDragActions (Qt::DropActions actions ) |
另請參閱 Qt::DropActions and supportedDropActions ().
[read-only]
topLevelItemCount
: const
int
此特性保持頂層項數
默認情況下,此特性擁有 0 值。
訪問函數:
| int | topLevelItemCount () const |
另請參閱 columnCount () 和 currentItem ().
[explicit]
QTreeWidget::
QTreeWidget
(
QWidget
*
parent
= nullptr)
構造樹 Widget 采用給定 parent .
[virtual noexcept]
QTreeWidget::
~QTreeWidget
()
銷毀樹 Widget 及其所有項。
追加 item 作為 Widget 頂層項。
另請參閱 insertTopLevelItem ().
追加列錶 items 作為 Widget 頂層項。
另請參閱 insertTopLevelItems ().
[slot]
void
QTreeWidget::
clear
()
通過移除其所有項和選定,清零樹 Widget。
注意: 由於在刪除之前會從樹 Widget 移除各項,返迴值對於 QTreeWidgetItem::treeWidget () 將無效,當從項析構函數調用時。
另請參閱 takeTopLevelItem (), topLevelItemCount (),和 columnCount ().
關閉持久編輯器為 item 以給定 column .
此函數不起作用,若此項和列的組閤沒有打開持久編輯器。
另請參閱 openPersistentEditor () 和 isPersistentEditorOpen ().
[slot]
void
QTreeWidget::
collapseItem
(const
QTreeWidgetItem
*
item
)
關閉 item 。這導緻包含項子級的樹被摺疊。
另請參閱 expandItem (), currentItem (), itemAt (),和 topLevelItem ().
返迴樹 Widget 當前列。
另請參閱 setCurrentItem () 和 columnCount ().
返迴樹 Widget 中的當前項。
另請參閱 setCurrentItem () 和 currentItemChanged ().
[signal]
void
QTreeWidget::
currentItemChanged
(
QTreeWidgetItem
*
current
,
QTreeWidgetItem
*
previous
)
此信號被發射在當前項改變時。當前項指定通過 current ,且這替換 previous 當前項。
另請參閱 setCurrentItem ().
[override virtual protected]
void
QTreeWidget::
dropEvent
(
QDropEvent
*
event
)
重實現: QAbstractItemView::dropEvent (QDropEvent *event).
[virtual protected]
bool
QTreeWidget::
dropMimeData
(
QTreeWidgetItem
*
parent
,
int
index
, const
QMimeData
*
data
,
Qt::DropAction
action
)
處理 data 的提供是通過結束拖放操作,按給定 action 在 index 以給定 parent 項。
默認實現返迴
true
若掉落成功處理通過解碼 MIME 數據並將其插入模型;否則它返迴
false
.
另請參閱 supportedDropActions () 和 supportedDragActions .
開始編輯 item 以給定 column 若它可編輯。
[override virtual protected]
bool
QTreeWidget::
event
(
QEvent
*
e
)
重實現: QAbstractItemView::event (QEvent *event).
[slot]
void
QTreeWidget::
expandItem
(const
QTreeWidgetItem
*
item
)
展開 item 。這導緻包含項子級的樹被展開。
另請參閱 collapseItem (), currentItem (), itemAt (), topLevelItem (),和 itemExpanded ().
返迴的項列錶匹配給定 text ,使用給定 flags ,在給定 column .
返迴用於樹小部件 Header (頭部) 的項。
另請參閱 setHeaderItem ().
返迴 QModelIndex 關聯給定 item 以給定 column .
注意:
在 Qt 5.7 之前,此函數接受非
const
item
.
另請參閱 itemFromIndex () 和 topLevelItem ().
返迴索引為給定頂層 item ,或 -1 若找不到項。
另請參閱 sortItems () 和 topLevelItemCount ().
插入 item at index 在視圖的頂層。
不會插入項,若已插入在某些地方。
另請參閱 addTopLevelItem () 和 columnCount ().
插入列錶 items at index 在視圖的頂層。
不會插入項,若已插入在某些地方。
另請參閱 addTopLevelItems ().
返迴樹 Widget 的不可見根項。
不可見根項提供對樹 Widget 頂層項的訪問透過 QTreeWidgetItem API,使編寫可以按統一方式處理頂層項及其子級的函數成為可能;例如:遞歸函數。
返迴是否打開持久編輯器為項 item 在列 column .
另請參閱 openPersistentEditor () 和 closePersistentEditor ().
返迴上方項為給定 item .
[signal]
void
QTreeWidget::
itemActivated
(
QTreeWidgetItem
*
item
,
int
column
)
此信號被發射當用戶通過單擊或雙擊激活項時 (從屬平颱,即:在 QStyle::SH_ItemView_ActivateItemOnSingleClick 樣式提示) 或按下特殊鍵 (如: Enter ).
指定
item
是被點擊項,或
nullptr
若沒有點擊項。
column
是被點擊的項的列,或 -1 若沒有點擊項。
返迴指針指嚮項在坐標 p 。坐標相對於樹 Widget 的 viewport ().
另請參閱 visualItemRect ().
返迴指針指嚮項在坐標 ( x , y )。坐標相對於樹 Widget 的 viewport ().
這是重載函數。
返迴下方視覺項為給定 item .
[signal]
void
QTreeWidget::
itemChanged
(
QTreeWidgetItem
*
item
,
int
column
)
此信號被發射當內容在 column 以指定 item 改變。
[signal]
void
QTreeWidget::
itemClicked
(
QTreeWidgetItem
*
item
,
int
column
)
此信號被發射當用戶在 Widget 內點擊時。
指定 item 是被點擊項。 column 是項的被點擊列。若沒有點擊項,不會發射信號。
[signal]
void
QTreeWidget::
itemCollapsed
(
QTreeWidgetItem
*
item
)
此信號發射,當指定 item 被摺疊以便不顯示其子級。
注意: 此信號不會被發射若項改變其狀態當 collapseAll () 被援引。
另請參閱 QTreeWidgetItem::isExpanded (), itemExpanded (),和 collapseItem ().
[signal]
void
QTreeWidget::
itemDoubleClicked
(
QTreeWidgetItem
*
item
,
int
column
)
此信號被發射當用戶在 Widget 內雙擊時。
指定
item
是被點擊項,或
nullptr
若沒有點擊項。
column
是項的被點擊列。若沒有項被雙擊,不會發射信號。
[signal]
void
QTreeWidget::
itemEntered
(
QTreeWidgetItem
*
item
,
int
column
)
此信號發射,當鼠標光標進入 item 覆蓋指定 column . QTreeWidget 需要啓用鼠標追蹤,為使此特徵能工作。
[signal]
void
QTreeWidget::
itemExpanded
(
QTreeWidgetItem
*
item
)
此信號發射,當指定 item 被展開以便顯示其所有子級。
另請參閱 QTreeWidgetItem::isExpanded (), itemCollapsed (),和 expandItem ().
返迴指針指嚮 QTreeWidgetItem 關聯給定 index .
另請參閱 indexFromItem ().
[signal]
void
QTreeWidget::
itemPressed
(
QTreeWidgetItem
*
item
,
int
column
)
此信號被發射當用戶在 Widget 內按下鼠標按鈕時。
指定
item
是被點擊項,或
nullptr
若沒有點擊項。
column
是被點擊的項的列,或 -1 若沒有點擊項。
[signal]
void
QTreeWidget::
itemSelectionChanged
()
此信號被發射當樹 Widget 選定改變時。可以找到當前選定采用 selectedItems ().
返迴單元格顯示 Widget 指定通過 item 和給定 column .
另請參閱 setItemWidget () 和 removeItemWidget ().
[virtual protected]
QMimeData
*QTreeWidget::
mimeData
(const
QList
<
QTreeWidgetItem
*> &
items
) const
返迴的對象包含序列化描述為指定 items 。用於描述項的格式獲取自 mimeTypes () 函數。
若項列錶為空,
nullptr
被返迴而不是序列化空列錶。
[virtual protected]
QStringList
QTreeWidget::
mimeTypes
() const
返迴可用於描述 treewidget 項列錶的 MIME 類型列錶。
另請參閱 mimeData ().
打開持久編輯器為 item 以給定 column .
另請參閱 closePersistentEditor () 和 isPersistentEditorOpen ().
刪除設置 Widget 在給定 item 以給定 column .
另請參閱 itemWidget () 和 setItemWidget ().
[slot]
void
QTreeWidget::
scrollToItem
(const
QTreeWidgetItem
*
item
,
QAbstractItemView::ScrollHint
hint
= EnsureVisible)
確保 item 可見,捲動視圖若有必要使用指定 hint .
另請參閱 currentItem (), itemAt (),和 topLevelItem ().
返迴所有選定的非隱藏項的列錶。
另請參閱 itemSelectionChanged ().
設置當前 item 在樹 Widget。
除非選定方式為 NoSelection ,還選中項。
另請參閱 currentItem () 和 currentItemChanged ().
設置當前 item 在樹 Widget 和當前列到 column .
另請參閱 currentItem ().
設置當前 item 在樹 Widget 和當前列到 column ,使用給定 command .
另請參閱 currentItem ().
設置 Header (頭) item 為樹小部件。頭中每列的標簽由項相應標簽提供。
樹 Widget 擁有項的所有權。
另請參閱 headerItem () 和 setHeaderLabels ().
如同 setHeaderLabels ( QStringList ( label )).
為每項添加 Header (頭部) 列按 labels 列錶, 並為每列設置標簽。
注意:setHeaderLabels() 不會移除現有列。
另請參閱 setHeaderItem () 和 setHeaderLabel ().
設置給定 widget 以顯示在指定單元格通過給定 item and column .
給定 widget 's autoFillBackground 特性必須被設為 true,否則 Widget 背景將透明,同時展示模型數據和樹 Widget 項。
此函數隻應該用於在樹 Widget 項位置處顯示靜態內容。若想要顯示自定義動態內容或實現自定義編輯器 Widget,使用 QTreeView 和子類 QStyledItemDelegate 代替。
不可以調用此函數在設置項層次結構之前,即 QTreeWidgetItem 將保持 widget 必須被添加到視圖之後 widget 有設置。
注意: The tree takes ownership of widget .
另請參閱 itemWidget (), removeItemWidget (),和 委托類 .
[override virtual]
void
QTreeWidget::
setSelectionModel
(
QItemSelectionModel
*
selectionModel
)
重實現: QTreeView::setSelectionModel (QItemSelectionModel *selectionModel).
返迴用於排序 Widget 內容的列。
另請參閱 sortItems ().
排序 Widget 項按指定 order 通過值在給定 column .
另請參閱 sortColumn ().
[virtual protected]
Qt::DropActions
QTreeWidget::
supportedDropActions
() const
返迴由此視圖所支持的掉落動作。
另請參閱 Qt::DropActions , supportedDragActions ,和 dropMimeData ().
移除頂層項位於給定
index
在樹中並返迴它,否則返迴
nullptr
;
另請參閱 insertTopLevelItem (), topLevelItem (),和 topLevelItemCount ().
返迴頂層項位於給定
index
,或
nullptr
若項不存在。
另請參閱 topLevelItemCount () 和 insertTopLevelItem ().
返迴項所占據的視口矩形為 item .
另請參閱 itemAt ().