Вы можете использовать setSelectionMode
класса QAbstractItemView
(от которого наследуется QTreeWidget
), чтобы не устанавливать режим выбора для компонента.Примерно так (извините, код на C ++):
yourtreeView->setSelectionMode(QAbstractItemView::NoSelection);
В этом случае элементы не будут выделены, но вы все равно увидите прямоугольник фокуса вокруг них.Чтобы это исправить, вы можете настроить виджет так, чтобы он не принимал фокус, вызвав:
yourtreeView->setFocusPolicy(Qt::NoFocus);
, если ваш виджет дерева должен принимать фокус, но не должен рисовать прямоугольники фокуса, вы можете использовать пользовательский делегат элемента и удалить State_HasFocus
состояние от состояния элемента до его рисования.Как то так:
class NoFocusDelegate : public QStyledItemDelegate
{
protected:
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
};
void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
QStyleOptionViewItem itemOption(option);
if (itemOption.state & QStyle::State_HasFocus)
itemOption.state = itemOption.state ^ QStyle::State_HasFocus;
QStyledItemDelegate::paint(painter, itemOption, index);
}
....
NoFocusDelegate* delegate = new NoFocusDelegate();
yourtreeView->setItemDelegate(delegate);