[英]Qt - QPushButtons in place of QTreeView Items
是否可以為QTreeView中的每個項目添加QPushButtons? 例如,當您單擊TreeItem(即按鈕)時,其子級也會顯示為按鈕嗎? 我只有一個標准的QTreeView。
_layout = new QVBoxLayout(this);
treeView = new QTreeView(this);
QStandardItemModel* standardModel = new QStandardItemModel();
QStandardItem* rootMenu = standardModel->invisibleRootItem();
//populate TreeView
treeView->setModel(standardModel);
treeView->setWordWrap(true);
treeView->setHeaderHidden(true);
//treeView->expandAll();
_layout->addWidget(treeView);
this->setLayout(_layout);
我還沒有親自完成此操作,但是您可以嘗試使用QAbstractItemView :: setIndexWidget()。 窗口小部件不會以任何方式連接到數據模型,因此取決於代碼是否需要更新它們。 另外,您需要分別為每個QModelIndex調用它。
這是答案。 您必須創建自己的委托並將其應用於QTreeView
。 要創建委托,您必須子類化QStyledItemDelegate並以您想要的方式重新實現其QStyledItemDelegate::paint(...)
方法,並且,如果發生以下情況,請不要忘記重新實現QStyledItemDelegate::sizeHint(...)
方法當然需要。 另外,您可能需要重新實現QStyledItemDelegate::createEditor(...)
方法。
要將創建的委托應用於視圖( QTreeView
),必須創建委托並調用QTreeView
的方法setItemDelegate
(或setItemDelegateForColumn
或setItemDelegateForRow
)。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.