Russian Qt Forum
Июля 01, 2025, 01:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [4.x.x] QTreeView и selection.  (Прочитано 3680 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« : Апреля 07, 2009, 18:01 »

Категорически всех приветствую.
При клике на итем QTreeView, он сразу становится выделенным, что не нужно. Нужно, чтобы итем становился курентом, но не селектом. Не могу воткнуть что нужно отнаследовать QTreeView или QItemSelectionModel, и можно ли без наследования обойтись? Пытался использовать installEventFilter, но в нем не отлавливаются события мыши для QTreeView. Грустный
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
EhTemka
Гость
« Ответ #1 : Апреля 07, 2009, 18:28 »

QAbstractItemView::setSelectionMode(QAbstractItemView::NoSelection)  подойдет?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Апреля 07, 2009, 18:32 »

Не вариант. Нужна возможность выделения, причем MultiSelect.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
EhTemka
Гость
« Ответ #3 : Апреля 07, 2009, 18:57 »

Ну, когда мне нужен был контролируемый селект, я наследовался от QItemSelectionModel.

переопределял там две функции, что-то типо этого

Код
C++ (Qt)
void SelectModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
{
if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {
QItemSelectionModel::select(selection, command);
}
}
 
void SelectModel::select(const QModelIndex &selection, QItemSelectionModel::SelectionFlags command)
{
if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {
QItemSelectionModel::select(selection, command);
}
}
 

Да и есче, учти, что если ты нажал шифт или сонтрол не в фокусе приложения (или еще хуже отпустил), то флаг keyboardModifiers не обноаляется. я делал такую вещь :

вместо прямой проверки (QApplication::keyboardModifiers() & Qt::ShiftModifier)... использовал свой флаг, который сбрасывал при астивации/деактивации главного окна

Код
C++ (Qt)
bool MainWindow::event(QEvent *e)
{
if (e->type() == QEvent::WindowActivate
|| e->type() == QEvent::WindowDeactivate) {
setIsSelectMyFlag(false);
}
 
return QMainWindow::event(e);
}
 
« Последнее редактирование: Апреля 07, 2009, 19:07 от EhTemka » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 3.327 секунд. Запросов: 23.