Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Галочка в ячейке QTableWidget - как? Как задать тип значения в ячейке? 
:(
    Опции темы
bvn13
Дата 22.9.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 26.5.2009

Репутация: нет
Всего: нет



Хочется иметь в качестве значений отдельной колонки в QTableWidget галочку. Т.е. строго булево Да/Нет. Возможно ли это сделать?
PM MAIL   Вверх
ecspertiza
Дата 22.9.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Почитай про делегирование, это тебе должно помочь. 


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Acer
Дата 22.9.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



Можно еще
Код

void QTableWidget::setCellWidget ( int row, int column, QWidget * widget )

PM MAIL   Вверх
bvn13
Дата 23.9.2009, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 26.5.2009

Репутация: нет
Всего: нет



Цитата(ecspertiza @ 22.9.2009,  10:32)
Почитай про делегирование, это тебе должно помочь.

Чет я почитал мельком, ничего не понятно... надо разбираться.

Добавлено через 2 минуты и 32 секунды
Цитата(bvn13 @ 23.9.2009,  10:21)
Цитата(ecspertiza @ 22.9.2009,  10:32)
Почитай про делегирование, это тебе должно помочь.

Чет я почитал мельком, ничего не понятно... надо разбираться.

А вот с этим получилось без проблем. Спасибо.


PM MAIL   Вверх
bvn13
Дата 12.10.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 26.5.2009

Репутация: нет
Всего: нет



Возвращаюсь к старым баранам... smile

Делаю галки вот так:
Код

    ui.tablHotkeys->insertRow(ui.tablHotkeys->rowCount());
    //ui.tablHotkeys->rowHeight(ui.tablHotkeys->rowCount());
    QCheckBox *chbox1 = new QCheckBox;
    ui.tablHotkeys->setCellWidget(ui.tablHotkeys->rowCount()-1,0,chbox1);
    QCheckBox *chbox2 = new QCheckBox;
    ui.tablHotkeys->setCellWidget(ui.tablHotkeys->rowCount()-1,1,chbox2);
    QCheckBox *chbox3 = new QCheckBox;
    ui.tablHotkeys->setCellWidget(ui.tablHotkeys->rowCount()-1,2,chbox3);




а вот как получить значение галочки программно?
Чет никак не догоню....

делаю вот так, но не отрабатывает:
Код

        QWidget *isShiftW = ui.tablHotkeys->cellWidget(rcount,0);
        QCheckBox *isShiftChB = new QCheckBox(isShiftW);
        bool isShift = isShiftChB->isChecked();


Каков алгоритм "выдергивания" QCheckBox и его значения из ячейки QTableWidget?
PM MAIL   Вверх
SABROG
Дата 12.10.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Код

QTableWidgetItem *item1 = new QTableWidgetItem("");
item1->setCheckState(Qt::Checked);
ui.tablHotkeys->setItem(row, column, item1);
...
QTableWidgetItem *item2 =  ui.tablHotkeys->item(row, column);
if (item2->checkState() == Qt::Checked)
    qDebug() << "Item is checked";


Это сообщение отредактировал(а) SABROG - 12.10.2009, 14:23


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bvn13
Дата 12.10.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 26.5.2009

Репутация: нет
Всего: нет



Цитата(SABROG @ 12.10.2009,  14:23)
Код

if (item2->checkState() == Qt::Checked)

вот на эту строку ругается:

Unhandled exception at 0x656e4623 (QtGuid4.dll) in TrayHotkey.exe: 0xC0000005: Access violation reading location 0x00000000.

ошибка в файле qtablewidget.h номер 161:
Код

{ return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); }


Добавлено через 2 минуты и 44 секунды
потому что переменная item2 не определилась (адрес нулевой)

Добавлено через 8 минут и 12 секунд
упустил вот этот кусок кода:
Код

QTableWidgetItem *item1 = new QTableWidgetItem("");
item1->setCheckState(Qt::Checked);
ui.tablHotkeys->setItem(row, column, item1);


написал его, все отработало без ошибок. но хотелось бы иметь в ячейке таблицы не значение (строку) с пометкой, а просто пометку. Можно ли в таком раскладе отключить возможность редактирования самого значения (строки) в ячейке таблицы? Чтобы только пометка использовалась...
PM MAIL   Вверх
SABROG
Дата 12.10.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(bvn13 @  12.10.2009,  15:14 Найти цитируемый пост)
отключить возможность редактирования самого значения


Код

item1->setFlags(item1->flags() & ~Qt::ItemIsEditable);



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0728 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.