Qt - QPushButtons вместо элементов QTreeView - PullRequest
0 голосов
/ 23 ноября 2010

Можно ли добавить QPushButtons для каждого элемента в QTreeView? Например, когда вы нажимаете на 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);

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Я лично не сделал этого (пока), но вы можете попробовать использовать QAbstractItemView :: setIndexWidget ().Виджеты не будут никоим образом не связаны с моделью данных, поэтому ваш код может обновлять их при необходимости.Также вам нужно вызывать его для каждого QModelIndex отдельно.

0 голосов
/ 22 ноября 2012

Вот ответ.Вы должны создать свой собственный делегат и применить его для своего QTreeView.Чтобы создать делегата, вы должны создать подкласс QStyledItemDelegate и повторно реализовать его метод QStyledItemDelegate::paint(...) таким образом, как хотите, также не забывайте, конечно, о повторной реализации метода QStyledItemDelegate::sizeHint(...), если это необходимо.Также вам может понадобиться повторно реализовать метод QStyledItemDelegate::createEditor(...).

Чтобы применить созданный делегат к вашему представлению (QTreeView), вы должны создать делегат и вызвать метод QTreeView setItemDelegate (или setItemDelegateForColumn или setItemDelegateForRow).

Удачи!

...