Russian Qt Forum

Qt => Вопросы новичков => Тема начата: YvenTitan от Октябрь 18, 2016, 10:01



Название: Изменение QComboBox в QTableWidget
Отправлено: YvenTitan от Октябрь 18, 2016, 10:01
Здравствуйте
У меня есть таблица, в ней один столбец состоит из QComboBox. Необходимо сделать, чтобы по изменению значения элемента в одном QComboBox менялось значение в ячейке, которая находится в той же строке, что и этот QComboBox. Можете подсказать как это сделать?
Если connect(comboBox,SIGNAL(currentIndexChanged(int),SLOT(...))); то непонятно, как определить, как можно определить строку, в котором находится данный QComboBox
http://www.linux.org.ru/forum/development/2274864 - здесь решена данная проблема, но может можно как-то по проще?


Название: Re: Изменение QComboBox в QTableWidget
Отправлено: Racheengel от Октябрь 18, 2016, 10:27
там не решение, а херня. (c)
делегатами надо.


Название: Re: Изменение QComboBox в QTableWidget
Отправлено: YvenTitan от Октябрь 18, 2016, 10:32
Если с делегатами, то у меня возникает следующий вопрос: как сделать, чтобы QComboBox отображался сразу в таблице (а не только при начале редактирования)?


Название: Re: Изменение QComboBox в QTableWidget
Отправлено: GreatSnake от Октябрь 18, 2016, 11:23
делегатами надо.
зачем  ???

Ведь есть сигнал
Код
C++ (Qt)
void QAbstractItemModel::dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight, const QVector<int> & roles = QVector<int> ())

Upd. В очередной раз поспешил, ведь при изменении значения комбо-бокса данные в модели меняются не сразу. Да, в этом случае только через делегат.

как сделать, чтобы QComboBox отображался сразу в таблице (а не только при начале редактирования)?
Никак. Qt-ишный MVC для этого не предназначен.
Коли требуется такое поведение, добавляй комбо-боксы через
Код
C++ (Qt)
void QTreeWidget::setItemWidget(QTreeWidgetItem * item, int column, QWidget * widget)
Но в этом случае сам должен будешь в модель применять изменения.


Название: Re: Изменение QComboBox в QTableWidget
Отправлено: Авварон от Октябрь 18, 2016, 12:33
Ну тамщем-то его можно через делегат нарисовать.


Название: Re: Изменение QComboBox в QTableWidget
Отправлено: GreatSnake от Октябрь 18, 2016, 12:39
Ну тамщем-то его можно через делегат нарисовать.
Нарисовать-то можно, только вот организовать с ним интерактив будет очень геморно.


Название: Re: Изменение QComboBox в QTableWidget
Отправлено: Racheengel от Октябрь 18, 2016, 14:15
Если с делегатами, то у меня возникает следующий вопрос: как сделать, чтобы QComboBox отображался сразу в таблице (а не только при начале редактирования)?

Отрисовать ячейку в стиле комбобокса. Например, через QStylePainter