crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> РЕШЕНО! Как установить фокус на Виджет в диалоговом окне редактирования записи, который связан с выбранной колонкой пользователем
mishabard
  опции профиля:
сообщение 15.7.2011, 11:26
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть диалоговое окно для редактирования таблицы, создается динамически. На нем размещены виджеты и связаны с полями таблицы через QDataWidgetMapper.
Вопрос: как узнать из функции какой виджет в диалоговом окне связан с определенным номером колонки в таблице?
Цель: установить фокус редактирования на нужный виджет при открывании диалогового окна, т.е. на тот, который связан с колонкой в таблице, по которой шелкунл пользователь.

Сообщение отредактировал mishabard - 18.7.2011, 10:10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.7.2011, 19:12
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


за выделение ячеек представления отвечает МодельВыделения, у представления её можно получить с помощью QAbstractItemView::selectionModel ().
Через эту модель много полезного можно узнать (обычно она возвращает модельный индекс). Зная модельный индекс можно установить текущий виджет (я так понимаю, что это и будет фокус), с помощью QDataWidgetMapper::setCurrentModelIndex()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mishabard
  опции профиля:
сообщение 18.7.2011, 10:08
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

Спасибо сказали: 0 раз(а)




Репутация:   0  


Решил задачу следующим образом, может кому пригодиться!
В конструкторе диалогового окна чтобы установить фокус выделенной ячейки на связанный с ней виджет делаем следующее:
....
QTableView * view;
....
    mapper = new QDataWidgetMapper(this);
    mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
    mapper->setModel(model);
    mapper->setItemDelegate(new QSqlRelationalDelegate(this));
    mapper->addMapping(pManager,10);
   ......
    mapper->addMapping(pPartner, 11);
......

QWidget * curWidget=mapper->mappedWidgetAt(view->currentIndex().column());
    if (curWidget)
    curWidget->setFocus();
    else
        pManager->setFocus();//фокус по умолчанию, если не найдено ни одного связанного виджета
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.1.2021, 23:48