Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: aliks-os от Апрель 11, 2011, 17:35



Название: QTableWidget, setCheckState, только для чтения
Отправлено: aliks-os от Апрель 11, 2011, 17:35
Имеется QTableWidget, в некоторые ячейки устанавливаю галки. Сама таблица настроена на НЕ срабатывания режима редактирования. Ячейки, в которых просто текст не редактируются, как и положено. Однако состояние галок можно изменить. Пробовал поэкспериментировать с флагами - не помогло. Как правильно запретить изменение состояние галок.
Код я создаю элемент  и добавляю его в таблицу
Код:
            newItem = new QTableWidgetItem("");
            if (mI->record(i).value("non_unique").toInt() == 0) {
                newItem->setCheckState(Qt::Checked);
            } else {
                newItem->setCheckState(Qt::Unchecked);
            }
            newItem->setFlags(newItem->flags() &= ~Qt::ItemIsEditable);
            newItem->setFlags(newItem->flags() &= ~Qt::ItemIsUserCheckable);
            newItem->setFlags(Qt::NoItemFlags);
            ui->tableW_indexes->setItem(row, 2, newItem);



Название: Re: QTableWidget, setCheckState, только для чтения
Отправлено: mutineer от Апрель 11, 2011, 17:38
Делай через ModelView, там больше контроля над всем этим


Название: Re: QTableWidget, setCheckState, только для чтения
Отправлено: Fess от Апрель 12, 2011, 05:40
попробуйте просто
newItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable);
как вариант - сделайте наследника QTableWidgetItem и переопределите метод flags()


Название: Re: QTableWidget, setCheckState, только для чтения
Отправлено: aliks-os от Апрель 12, 2011, 10:41
Делай через ModelView, там больше контроля над всем этим

Модельная система меня в данном случае не устраивает, я наоборот ушел от нее.

Вопрос решил. При помощи флагов. Однако обнаружил странный глюк...хм....на компе сбился календарь и Qt Creator почему то странным образом при компиляции не вносил изменения, т.е. когда я установил флаги они факту не откомпилились. Календарь поправил, заново откомпилил и все заработало как надо.
Тему можно считать закрытой