Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: РЕШЕНО! Как установить фокус на Виджет в диалоговом окне редактирования записи
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
mishabard
Есть диалоговое окно для редактирования таблицы, создается динамически. На нем размещены виджеты и связаны с полями таблицы через QDataWidgetMapper.
Вопрос: как узнать из функции какой виджет в диалоговом окне связан с определенным номером колонки в таблице?
Цель: установить фокус редактирования на нужный виджет при открывании диалогового окна, т.е. на тот, который связан с колонкой в таблице, по которой шелкунл пользователь.
Litkevich Yuriy
за выделение ячеек представления отвечает МодельВыделения, у представления её можно получить с помощью QAbstractItemView::selectionModel ().
Через эту модель много полезного можно узнать (обычно она возвращает модельный индекс). Зная модельный индекс можно установить текущий виджет (я так понимаю, что это и будет фокус), с помощью QDataWidgetMapper::setCurrentModelIndex()
mishabard
Решил задачу следующим образом, может кому пригодиться!
В конструкторе диалогового окна чтобы установить фокус выделенной ячейки на связанный с ней виджет делаем следующее:
....
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();//фокус по умолчанию, если не найдено ни одного связанного виджета
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.