Название: как передать индекс из модели в форму? Отправлено: mokynis от Декабрь 16, 2009, 10:18 изучаю модель-представление по Шлее (стр. 253). Идет туго. Пробую сделать модель на основе QAbstractTableModel с представлением в QTableView. И еще на форме расположил QSpinBox. Хочу сделать, чтобы при выделении ячейки в таблице, содержимое (int) отображалось в QSpinBox и его оттуда можно бы былло изменять. Понимаю, что как-то туда нужно передать текущий индекс модели, но никак не пойму, как именно это делается. Функции setModel у QSpinBox нет. Или надо своего делегата для этого виджета делать?
Название: Re: как передать индекс из модели в форму? Отправлено: Пантер от Декабрь 16, 2009, 12:30 Почитай про QDataWidgetMapper.
Название: Re: как передать индекс из модели в форму? Отправлено: mokynis от Декабрь 16, 2009, 13:56 спасибо! Кажется, то, что надо.
Название: Re: как передать индекс из модели в форму? Отправлено: lit-uriy от Декабрь 16, 2009, 14:02 >Понимаю, что как-то туда нужно передать текущий индекс модели
Индекс туда передавать не получится. Ты можешь использовать QDataWidgetMapper, как сказал Пантер. Либо руками нужно сделать, например, в классе виджета-окна один слот (с помощью него будешь принимать информацию о выделенной ячеке): selectSlot( const QModelIndex & current, const QModelIndex & previous ) Сначала нужно получить модель отвечающую за выделение у этого представления: QItemSelectionModel * QAbstractItemView::selectionModel () const (эта модель действительна только после установки модели данных) Затем, нужно соединить её сигнал: currentChanged ( const QModelIndex & current, const QModelIndex & previous ) с твоим слотом, и в слоте получить значение ячейки (модельный индекс передаётся в твой слот как аргумент). Для обратного действия, т.е. из QSpinBox'а в модель. Нужно сделать слот для принятия данных из спинбокса, при изменении. И отправки этих данных в модель. Модельный индекс можно получить вызвав функцию currentIndex () модели выделения |