crossplatform.ru

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


  Ответ в QTableWidget отслеживание изменений
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
wiz29 Дата 26.12.2011, 8:47
 
Цитата
QStandardItem *item = new QStandardItem();
item->setData("текст", Qt::DisplayRole);
column1.append(item);
item->setData("текст2", Qt::DisplayRole);
column1.append(item);


Добавляешь один и тот же итем 2 раза, естественно что 2й строки тут не будет...
....
QStandartItemModel* pSomeModel = new QStandartItemModel(...);
QStandardItem *item = new QStandardItem();
item->setData("текст", Qt::DisplayRole);
pSomeModel->appendRow(item);
item = new QStandardItem();
item->setData("текст2", Qt::DisplayRole);
pSomeModel->appendRow(item);
....

Петр91 Дата 26.12.2011, 4:29
  Извините за флуд, ни как не могу лабу доделать. Вот я создаю:
QList<QStandardItem *> column1;

QStandardItem *item = new QStandardItem();
item->setData("текст", Qt::DisplayRole);
column1.append(item);

Все работает. Но когда я хочу сделать так, что бы лист содержал два итема и пишу
QStandardItem *item = new QStandardItem();
item->setData("текст", Qt::DisplayRole);
column1.append(item);
item->setData("текст2", Qt::DisplayRole);
column1.append(item);

Вместо текст2 отображается пустая ячейка, почему??? Если создать новый итем все работает, но это получается на каждый элемент таблицы свой итем??
Петр91 Дата 26.12.2011, 2:13
  А, все. Не заметил класс) Разобрался, спасибо!
Петр91 Дата 25.12.2011, 12:15
  Спасибо за ценный пример, толко я не пойму как вы создаете модель. Какой класс у вас родительским является. Я читаю книжку Макса Шлее, я создавал модель выбирая в качестве родительского класса, класс QStringListModel а у вас как?
Петр91 Дата 21.12.2011, 4:15
  Пришлось отказаться от tablewidget и перейти на tableview. Я как раз лабу и делаю про mvс. Создал модель, передаю ее в tableview. В первом столбце char в другом допустим int. Вот мне необходимо отслеживать. + сама программа может изменить. Да мне хотя бы самый минимум сделать. Необязательно хранить старое значение, если не корректно введены данные, то не выходить из редактирования элемента. Сейчас разберусь с мвц, и пример гляну.
crashsp Дата 20.12.2011, 21:05
 
Цитата(ilyabvt @ 20.12.2011, 21:01) *
Ну тогда переопределить keyPressEvent или поставить фильтр событий. Итогом ввода можно считать например нажатие клавиши Enter или сигнал itemSelectionChanged. Текст полученный в обработчике keyPressEvent сохранять в отдельной переменной, а по окончанию ввода (см. выше) проверять полученную строку.

Зачем морочить ? если есть уже все готовое просто бери и используй , я про модель и представление...
ilyabvt Дата 20.12.2011, 21:01
  Ну тогда переопределить keyPressEvent или поставить фильтр событий. Итогом ввода можно считать например нажатие клавиши Enter или сигнал itemSelectionChanged. Текст полученный в обработчике keyPressEvent сохранять в отдельной переменной, а по окончанию ввода (см. выше) проверять полученную строку.
crashsp Дата 20.12.2011, 19:46
 
Цитата(ilyabvt @ 20.12.2011, 20:24) *
Цитата
Я пытался делать через void QTableWidget::itemChanged ( QTableWidgetItem * item ) и void QTableWidget::cellChanged ( int row, int column ) [signal] но что то не могу разобраться(

Соедините сигнал itemChanged со свои слотом, а в слоте
item->text()
возвратит текст ячейки.

Этот сигнал испускается когда данные уже изменились , я так думаю ему надо перед изменением сделать какие то махинации с поступившими данными(в первом посте : по итогу ввода, запускается проверка введенного текста)
ilyabvt Дата 20.12.2011, 19:24
 
Цитата
Я пытался делать через void QTableWidget::itemChanged ( QTableWidgetItem * item ) и void QTableWidget::cellChanged ( int row, int column ) [signal] но что то не могу разобраться(

Соедините сигнал itemChanged со свои слотом, а в слоте
item->text()
возвратит текст ячейки.
crashsp Дата 20.12.2011, 18:20
 
Цитата(Петр91 @ 20.12.2011, 17:24) *
Тема избитая на просторах интернета, но я так и не могу ее решить. Либо на форумах отправляют документацию читать либо советуют то что в конечном итоге не работает. Во общем задача такая. При редактировании какой либо ячейки, по итогу ввода, запускается проверка введенного текста. Как отследить изменение, и получить текст. Я пытался делать через void QTableWidget::itemChanged ( QTableWidgetItem * item ) и void QTableWidget::cellChanged ( int row, int column ) [signal] но что то не могу разобраться(

Самый простой способ это почитать про модель и представление, если плохо с документацией поищи любую книгу по Qt и там смотри главу "Модель и представление" , боюсь тут пару словами не обойтись, поэтому и отправляют читать.
Вот мини пример , на примере QStandardItemModel + QTableView.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 3:39