Russian Qt Forum
Ноябрь 24, 2024, 05:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Изменение QComboBox в QTableWidget  (Прочитано 4871 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Октябрь 18, 2016, 10:01 »

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

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Октябрь 18, 2016, 10:27 »

там не решение, а херня. (c)
делегатами надо.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #2 : Октябрь 18, 2016, 10:32 »

Если с делегатами, то у меня возникает следующий вопрос: как сделать, чтобы QComboBox отображался сразу в таблице (а не только при начале редактирования)?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Октябрь 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)
Но в этом случае сам должен будешь в модель применять изменения.
« Последнее редактирование: Октябрь 18, 2016, 12:07 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Октябрь 18, 2016, 12:33 »

Ну тамщем-то его можно через делегат нарисовать.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Октябрь 18, 2016, 12:39 »

Ну тамщем-то его можно через делегат нарисовать.
Нарисовать-то можно, только вот организовать с ним интерактив будет очень геморно.
Записан

Qt 5.11/4.8.7 (X11/Win)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Октябрь 18, 2016, 14:15 »

Если с делегатами, то у меня возникает следующий вопрос: как сделать, чтобы QComboBox отображался сразу в таблице (а не только при начале редактирования)?

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 23.