0

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);
4

2 に答える 2

1

私は個人的にこれを (まだ) 行っていませんが、QAbstractItemView::setIndexWidget() を使用してみてください。ウィジェットはデータ モデルにまったく接続されないため、必要に応じてコードを更新する必要があります。また、QModelIndex ごとに個別に呼び出す必要があります。

于 2010-12-11T11:13:09.053 に答える
0

これが答えです。独自のデリゲートを作成し、それを に適用する必要がありますQTreeView。デリゲートを作成するには、 QStyledItemDelegateをサブクラス化し、そのメソッドを必要に応じて再実装する必要があります。もちろん、必要に応じてメソッドQStyledItemDelegate::paint(...)を再実装することも忘れないでください。QStyledItemDelegate::sizeHint(...)また、メソッドを再実装する必要がある場合がありますQStyledItemDelegate::createEditor(...)

作成したデリゲートをビュー ( ) に適用するには、デリゲートを作成してのメソッド(または、または)QTreeViewを呼び出す必要があります。QTreeViewsetItemDelegatesetItemDelegateForColumnsetItemDelegateForRow

幸運を!

于 2012-11-22T18:57:04.527 に答える