Как отключить выбор всего столбца QTableView?

void setSelectionBehavior (QAbstractItemView :: SelectionBehavior поведения)

Эта функция принимает одно из трех значений: для выбора элементов, для выбора строк и выбора ячеек.

Вопрос:

Мне нужен случай, когда я щелкаю по ячейке, она выбирается, при щелчке по индексу строки выбирается строка, но при щелчке по заголовку столбца не выделяется весь столбец. Как я понимаю, это не может быть сделано с помощью этой функции.

Мне нужно, чтобы просмотр таблицы вел себя точно так же, как когда SelectionBehavior::selectItems установлено.

Но когда пользователь нажимает на заголовок, столбец не должен быть выбран.

Я думаю об отключении выбора столбца из QHeaderView но не могу найти как?

2

Решение

Из моего приложения:

    // get header from QTableView tableView (replace with your widget name)
QHeaderView *header = new QHeaderView(Qt::Horizontal, tableView);
#if QT_VERSION < 0x50000
// Qt 4.8.1
header->setResizeMode(QHeaderView::ResizeToContents);
#else
// Qt 5.2.0
header->setSectionResizeMode(QHeaderView::ResizeToContents);
#endif
header->setHighlightSections(false); // this is what you want

Слот setHighlightSections (bool) действителен для Qt 4 и Qt 5

РЕДАКТИРОВАТЬ:
Извините за невнимательность! Это работает, только если вы используете SelectRows или SelectItems с SingleSelection. Вы можете найти доказательства в источниках qheaderview.cpp а также qtableview.cpp, слоты voidQHeaderView::mousePressEvent(QMouseEvent *e); а также voidQTableViewPrivate::selectColumn(int column, bool anchor);

Для SelectItems может быть использован этот слот:

    header->setClickable(false);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]