void setSelectionBehavior (QAbstractItemView :: SelectionBehavior поведения)
Эта функция принимает одно из трех значений: для выбора элементов, для выбора строк и выбора ячеек.
Вопрос:
Мне нужен случай, когда я щелкаю по ячейке, она выбирается, при щелчке по индексу строки выбирается строка, но при щелчке по заголовку столбца не выделяется весь столбец. Как я понимаю, это не может быть сделано с помощью этой функции.
Мне нужно, чтобы просмотр таблицы вел себя точно так же, как когда SelectionBehavior::selectItems
установлено.
Но когда пользователь нажимает на заголовок, столбец не должен быть выбран.
Я думаю об отключении выбора столбца из QHeaderView
но не могу найти как?
Из моего приложения:
// 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);
Других решений пока нет …