Russian Qt Forum
Ноябрь 27, 2024, 17:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


Просмотр профиля 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]   Вверх
  Печать  
 
Перейти в:  


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