Название: Вопрос по работе с QTableWidget Отправлено: AntonUfo от Январь 24, 2010, 21:15 Несколько дней бьюсь, не могу создать простейшую таблицу из n столбцов и m строк, количество столбцов заранее известно, количество строк переменно (начинается с одной), строки нужно как добавлять новые (при нажатии кнопки создается новая строка и заполняется случайными числами к примеру) так и удалять нужные (ввел число, нашел его в таблице, удалил строчку к примеру). В примерах которые нашел в книгах, таблицы создаются на этапе компилирования целиком, может кто нибудь делал "для себя" небольшой примерчик по работе с таблицами.. ? (Тяжело у меня понимается модель - представление, поэтому и разобраться не могу....)
Название: Re: Вопрос по работе с QTableWidget Отправлено: DS_tm от Январь 25, 2010, 01:18 Для того, чтобы изменить (добавить/удалить) количество строк в таблице используйте функция setRowCount(). Чтобы задать значение для конкретной ячейки ислользуйте setItem().
Название: Re: Вопрос по работе с QTableWidget Отправлено: DS_tm от Январь 25, 2010, 01:20 А вообще для более-менее сложных таблиц лучше использовать связку QAbstractTableModel и QTableView.
Название: Re: Вопрос по работе с QTableWidget Отправлено: AntonUfo от Январь 25, 2010, 12:57 а как организовать выбор ячейки как в массивах (i,j) или [j], т.е. предположим нашел я нужную строчку, теперь нужно удалить все ячейки ее составляющие... т.е. нужно перебрать item(row,column) а как это сделать ?
Название: Re: Вопрос по работе с QTableWidget Отправлено: DS_tm от Январь 25, 2010, 13:03 tableWidget->model()->index(int row, int column)
Название: Re: Вопрос по работе с QTableWidget Отправлено: AntonUfo от Январь 25, 2010, 13:30 дело вот в чем, у меня создан собственный класс MyTable, наследник QTableWidget, для MyTable определены методы
void MyTable::tableSetParam(параметры); void MyTable::tableAddStr(параметры); void MyTable::tableDellStr(параметры); соответственно создаю таблицу так: table new MyTable(0); если нужно добавить строчку то в нужном месте программы вызываю table -> tableAddStr(параметры); к примеру удаление строки таблицы выглядит так: Код: void MyTable::tableDalStr(параметры){ Код: добавление строки.... как то похоже нужно организовать ввод параметров (используется уже при изменении созданных строк таблицы, т.е. item ы ячеек уже созданы, к ним нужно обеспечить доступ и изминять....) Название: Re: Вопрос по работе с QTableWidget Отправлено: DS_tm от Январь 25, 2010, 19:58 По делу: для доступа к существующим айтемам используйте QTableWidget::item(int row, int column). Потом с помощью setText или setData меняем айтом.
ОФФТОП касательно кода: Цитировать Код: void MyTable::tableDalStr(параметры){ Код меняем на: Код
P.S А вообще, как я уже говорил, для таких целей лучше использовать QTableView и свою модель наследовать от QAbstractTableModel! Изменение данных на стороне модели уж как-то по логичнее смотрятся. Название: Re: Вопрос по работе с QTableWidget Отправлено: SABROG от Январь 25, 2010, 22:12 Казалось бы хорошая штука foreach(), а вот менять в этом цикле элемент контейнера нельзя, т.к. ссылка константная. Бывает обидно, когда элемент контейнера - твой класс и ты не можешь вызвать не константный метод. И снова здравствуйте for(), while() и индексы с итераторами.
Название: Re: Вопрос по работе с QTableWidget Отправлено: DS_tm от Январь 25, 2010, 22:40 Казалось бы хорошая штука foreach(), а вот менять в этом цикле элемент контейнера нельзя, т.к. ссылка константная. Бывает обидно, когда элемент контейнера - твой класс и ты не можешь вызвать не константный метод. И снова здравствуйте for(), while() и индексы с итераторами. Полностью согласен с вышесказанным, только не очень понятно к чему это?) Название: Re: Вопрос по работе с QTableWidget Отправлено: SABROG от Январь 25, 2010, 22:56 Полностью согласен с вышесказанным, только не очень понятно к чему это?) Да обидно стало немного за Qt, вон boost может менять: Код
|