簡體   English   中英

Qt-QPushButtons代替QTreeView項目

[英]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 (或setItemDelegateForColumnsetItemDelegateForRow )。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM