Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] отслеживание изменений в QTableWidget, принятие/отмена изменений 
:(
    Опции темы
anatox91
Дата 10.10.2011, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


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

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



есть QTableWidget, нужно при редактировании какой-либо ячейки получать текст до itemChanged() (или cellChanged()), проверить его и если все в порядке то принять изменение, иначе отменить его(откатить на предыдущий текст) либо как минимум сделать ячейку пустой. Возможно либо сделать как-нибудь? желательно без наследования и попроще
заранее спасибо

Добавлено через 3 минуты и 23 секунды
гугл посоветовал что-то наподобие  connect(view()->itemDelegate(), SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*)));
но непонятно как пользоваться этим commitData()...

Это сообщение отредактировал(а) anatox91 - 10.10.2011, 23:57


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
loneybibi
Дата 11.10.2011, 01:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

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



Не вижу проблем вообще smile

Создаешь слот что то вроде этого:
Код

void MainWindow::slotEdit(QTableWidgetItem *item)
{
    //Проверяем условие если надо то что то делаем если нет то ничего не делаем
    if(item->text()==""){
        item->setText("Null");
    }
}

Соединяешь с сигналом QTableWidget:
Код

connect(ui->tableWidget,SIGNAL(itemChanged(QTableWidgetItem*)),this,SLOT(slotEdit(QTableWidgetItem*)));



--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
anatox91
Дата 11.10.2011, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


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

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



я не про это спрашивал
мне нужно при редактировании ячейки(а конкретно ввода числа в какой-то из систем счисления) проверить правильность введенного числа и соответствие его текущей системе счисления, и если не соответствует(неправильно введено) то отменить этот ввод(типа undo action)
я думаю надо как-то получать текст ячейки ДО itemChanged() или cellChanged() и работать с ним, но как это сделать раньше этих сигналов я не знаю

Это сообщение отредактировал(а) anatox91 - 11.10.2011, 01:40


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
loneybibi
Дата 11.10.2011, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

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



Тогда думаю лучше будет использовать делегаты. И в делегате например QSpinBox переопределять ввод числа и корректировать. Вот тут доступно про делегаты написано:
http://doc.crossplatform.ru/qt/4.5.0/model...w-delegate.html


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
borisbn
Дата 11.10.2011, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А чтобы не давать пользователю ружьё и не показывать на ногу, в делегата лучше вставить валидатор


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

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

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


 




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


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

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