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

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

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

Вопрос:

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

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

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

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

1 ответ

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

    // 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);
Другие вопросы по тегам