Russian Qt Forum

Qt => Вопросы новичков => Тема начата: sektor от Июнь 02, 2016, 13:21



Название: Делегат для QtableWidget
Отправлено: sektor от Июнь 02, 2016, 13:21
Добрый день всем. Хочу создать диалоговое окно с таблицей, при двойном клике на элемент таблицы редактирование происходило с  делегатом spinBox. Я знаю это можно сделать с помощью модель представления, но не хотел заморачиваться и хотел сделать на виджете tableWidget. Можно ли использовать делегирование для tableWidget, если да, пожалуйста приведите пример.


Название: Re: Делегат для QtableWidget
Отправлено: Racheengel от Июнь 02, 2016, 14:36
QTableWidget это наследник QAbstractItemView.
Соответственно делегировать можно, как и для вью.
Пример дает гугл очень быстро:
http://doc.qt.io/qt-4.8/qt-itemviews-spinboxdelegate-example.html


Название: Re: Делегат для QtableWidget
Отправлено: sektor от Июнь 03, 2016, 11:47
Сделал как в примере, что то у меня таблица пустая получается. Нет элементов.

Код:
{
    ui->setupUi(this);
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ItemDelegat delegat;
    ui->tableWidget->setItemDelegate(&delegat);
    ui->tableWidget->setItem(1,1, new QTableWidgetItem());

}


Название: Re: Делегат для QtableWidget
Отправлено: GreatSnake от Июнь 03, 2016, 11:57
Объект созданный в скопе будет уничтожен при выходе из скопа.


Название: Re: Делегат для QtableWidget
Отправлено: sektor от Июнь 03, 2016, 15:56
Все понял, получилось. А можно будет для каждой ячейки spinbox - а свои параметры установить ?


Название: Re: Делегат для QtableWidget
Отправлено: Racheengel от Июнь 03, 2016, 20:58
void QItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const

Sets the data to be displayed and edited by the editor from the data model item specified by the model index.

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


Название: Re: Делегат для QtableWidget
Отправлено: sektor от Июнь 08, 2016, 13:03
Спасибо