crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QTableWidget с CheckBox'ом внутри
silver47
  опции профиля:
сообщение 14.4.2011, 6:51
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Доброго времени суток. Вот такой вопрос.

Я могу установить QCheckBox для конкретной ячейки таблицы:
QTableWidget::setCellWidget(x, y, new QCheckBox)


Как мне прочитать его состояние? Есть такое QTableWidget::cellWidget(int x, int y); - возвращает указатель на виджет, расположенный в указанной ячейке. Как мне определить isCheked он или нет? для QWidget метод isCheked не определен. Если создать свой QCheckBox(QTableWidget::cellWidget(x, y)) и проверять его состояние, то он всегда false (потому что это уже другой объект QCheckBox (проверял по адресам)). А вот как сделать чтобы вновь созданный QCheckBox был ссылкой на старый? Не могу сообразить. :unsure:

Не хочу городить свою модель. Таблица не большая от 1 до 10 строчек.

Спасибо.

P.S. cellWidget(x, y) возвращает нужный мне указатель, только на тип QWidget, как бы его преобразовать к QCheckBox?

Сообщение отредактировал silver47 - 14.4.2011, 7:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
wiz29
  опции профиля:
сообщение 14.4.2011, 8:30
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


...............................
QTableWidget* pTableWidget(GetSomeTableWidget());
...............................................
QTableWidgetItem* pItem(pTableWidget->item(x, y));
if (pItem)
{
                //состояние чекбокса
        Qt::CheckState st = pItem->checkState();
}
...............................


Никаких виджетов устанавливать не нужно. Достаточно просто указать CheckState для элемента ячейки.

QTableWidgetItem::setFlags тебе поможет сделать элемент как чекбокс

Сообщение отредактировал wiz29 - 14.4.2011, 8:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 14.4.2011, 8:32
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


QTableWidget* pTableWidget(table);
QTableWidgetItem* pItem(pTableWidget->item(0, 0));
qDebug() << pItem;
if (pItem) {
    Qt::CheckState st = pItem->checkState();
}


table - это указатель на мой табличный виджет
pItem - всегда нулевой указатель :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 17:40