Russian Qt Forum
Ноябрь 06, 2024, 18:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 ... 7   Вниз
  Печать  
Автор Тема: QTableWidget или QAbstractTableModel &QTableView  (Прочитано 57342 раз)
daimon
Гость
« Ответ #15 : Ноябрь 23, 2009, 01:53 »

Для QAbstaractTableModel тогда я должен поставить вектор своих итемов (свой класс наследник QTableWidgetItem),
как элементы модели
Записан
spectre71
Гость
« Ответ #16 : Ноябрь 23, 2009, 02:26 »

Для QAbstaractTableModel тогда я должен поставить вектор своих итемов (свой класс наследник QTableWidgetItem),
как элементы модели

Нет - ничего подобного!
QTableWidgetItem - здесь совсем ни причем,  он имеет отношение только к QTableWidget.

Изучай "Model/View Programming" в Assistant.
Записан
daimon
Гость
« Ответ #17 : Ноябрь 23, 2009, 09:37 »

QTableWidgetItem наследник какого класса?
Какой контейнер поставить для таблицы 100*100?
« Последнее редактирование: Ноябрь 23, 2009, 09:40 от daimon » Записан
spectre71
Гость
« Ответ #18 : Ноябрь 23, 2009, 11:42 »

QTableWidgetItem наследник какого класса?
Какой контейнер поставить для таблицы 100*100?

Сколько можно повторять - QTableWidgetItem  для своей модели не нужен!
Хранить данные будешь в своем контейнере, а в определенных случаях их можно вообще нигде не хранить - это зависит от источника твоих данных, например в случае если данные генерятся налету.
Если бы ты изучил "Model/View Programming" то таких вопросов бы уже не задавал. Чтение займет час-другой.
Если трудно читать на английском в Assistant, то посмотри здесь:
http://qtdocs.narod.ru/4.1.0/doc/html/model-view-programming.html
 
Записан
daimon
Гость
« Ответ #19 : Ноябрь 23, 2009, 21:32 »

Хорошо, есть класс для одной ячейки (парсит строку и возвращает результат)

Какой контейнер нужно создать для модели таблицы 100*100

(двумерный вектор из моего класса?)
Можете посоветовать!!!!!!!!!!!!!!!
Проблема в том, что в примерах или списки, или пары (а меня может быть как много строк, так и много столбцов)
« Последнее редактирование: Ноябрь 23, 2009, 21:34 от daimon » Записан
spectre71
Гость
« Ответ #20 : Ноябрь 23, 2009, 21:53 »

Хорошо, есть класс для одной ячейки (парсит строку и возвращает результат)

Какой контейнер нужно создать для модели таблицы 100*100

(двумерный вектор из моего класса?)
Можете посоветовать!!!!!!!!!!!!!!!
Проблема в том, что в примерах или списки, или пары (а меня может быть как много строк, так и много столбцов)

Контейнер, а правильнее в данном случае назвать Источник данных не создается для модели! Все наоборот - модель создается для источника данных.
Соответственно , пока ты не описал подробнее свою задачу ничего посоветовать в плане структуры источника нельзя.
- это вполне может быть такой контейнер как двумерный массив
- или вообще без какого-либо контейнера, если данные для ячейки можно получить налету.
простейший пример int getValue(int Col, int Row) {return Col+Row;}

Опиши задачу
Записан
daimon
Гость
« Ответ #21 : Ноябрь 23, 2009, 22:03 »

Есть таблица, в которую я заношу данные (цифры)
Таблица может менять количество строк и столбцов
Формат записи в таблицу любой (на каждую ячейку поставлен парсер, который возвращает результат выражения в ячейке)
В итоге по этой таблице нужно построит график.

(а так в таблице нужно реализовать сортировку, вставку, копирование....)
Для QTableWidget я всё реализовал , но медленно работает, поставлен прототип для ячейки (парсер)
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #22 : Ноябрь 23, 2009, 22:05 »

>>QTableWidgetItem наследник какого класса?
А что мешает посмотреть в Асистенте, в первых строчках указывается базовый класс, если он есть.

>>Какой контейнер нужно создать для модели таблицы 100*100
Смотря что хранить.

>>Если трудно читать на английском в Assistant, то посмотри здесь:
Перевод документации по Qt4 лучше смотреть здесь: http://www.doc.crossplatform.ru.
У А.Корчагина (если не путаю, как зовут), перевод давно не актуализируется. П на кросплатформе содержит и его часть перевода.
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #23 : Ноябрь 23, 2009, 22:08 »

>>В итоге по этой таблице нужно построит график.
Вот с этого места по подробнее.
1) человек набивает формулы в таблицу руками?
2) формулы запоминаются, т.е. формулы можно корректировать?
3) Откуда исходные данные, их можно забивать руками?
Записан

Юра.
daimon
Гость
« Ответ #24 : Ноябрь 23, 2009, 22:13 »

>>В итоге по этой таблице нужно построит график.
Вот с этого места по подробнее.
1) человек набивает формулы в таблицу руками?
2) формулы запоминаются, т.е. формулы можно корректировать?
3) Откуда исходные данные, их можно забивать руками?

есть класс Parser в который я должен отправить строку из любой ячейки. В итоге парсер возвращает число, которое нужно поставить для ячейки (DisplayRole число из парсера, EditRole - введенная строка в ячейку)
Для таких нужд я для QTableWidget реализовал QTableWidgetItem и в эту таблицу заношу как прототип для ячейки.

Код:
class Cell :  public QTableWidgetItem
{


public:
Cell(QStringList names_for_columns_,QString text);
Cell(QStringList names_for_columns__);
~Cell()
{

}


    QTableWidgetItem *clone() const;
    void setData(int role, const QVariant &value);
    QVariant data(int role) const;
    void setFormula(const QString &formula);
    QString formula() const;
    void setDirty();

void set_names_for_columns(QStringList names_for_columns_)
{
names_for_columns =names_for_columns_;
}
// QString text();




private:

    QVariant value() const;
    QVariant evalExpression(const QString &str) const;
   

    mutable QVariant cachedValue;
    mutable bool cacheIsDirty;
mutable QStringList names_for_columns;
mutable parser par;

};
« Последнее редактирование: Ноябрь 23, 2009, 22:18 от daimon » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #25 : Ноябрь 23, 2009, 22:22 »

daimon, по этим трём вопросам ты меня не понял, расскажи, как это выглядит со стороны пользователя.
Какие ему возможности предоставляются.
Записан

Юра.
daimon
Гость
« Ответ #26 : Ноябрь 23, 2009, 22:30 »

daimon, по этим трём вопросам ты меня не понял, расскажи, как это выглядит со стороны пользователя.
Какие ему возможности предоставляются.
Пользователь создает объект класса QTableWidget и туда заносит итемы setItem(int row,int column ,QString str) переопределил
Каждый итем переопределён под мой класс итема.
При использовании юзер может вводит в таблицу вручную строку или в классе использовать setItem
При работе программы юзер вводит строку (выражение) -> в ячейку ставится посчитаное число, а при редактировании остается введенная пользователем строка (использую роль отображения - число из парсера, роль редактирования - строка пользователя )
Пример spreadsheet Планшета
Записан
spectre71
Гость
« Ответ #27 : Ноябрь 23, 2009, 22:39 »

daimon, по этим трём вопросам ты меня не понял, расскажи, как это выглядит со стороны пользователя.
Какие ему возможности предоставляются.
Пользователь создает объект класса QTableWidget и туда заносит итемы setItem(int row,int column ,QString str) переопределил
Каждый итем переопределён под мой класс итема.
При использовании юзер может вводит в таблицу вручную строку или в классе использовать setItem
При работе программы юзер вводит строку (выражение) -> в ячейку ставится посчитаное число, а при редактировании остается введенная пользователем строка (использую роль отображения - число из парсера, роль редактирования - строка пользователя )
Пример spreadsheet Планшета


Забудь про  QTableWidgetItem и QTableWidget  !!!!!!!!!!!!!!!!
У тебя что пользователь запускающий твою прогу сам создает объекты классов и вызывает методы, бедный пользователь.

Опиши задачу, а не то как ты себе представляешь отдельные части ее реализации.

1) Что выводится в самом начале(при запуске проги). Есть ли какие-нибудь данные в таблице. Если есть Какие, Сколько, Откуда беруться
2) Далее что можно делать с исходными данными(как это видит пользователь), и подробнее, мы не телепаты.
Записан
daimon
Гость
« Ответ #28 : Ноябрь 23, 2009, 22:43 »

daimon, по этим трём вопросам ты меня не понял, расскажи, как это выглядит со стороны пользователя.
Какие ему возможности предоставляются.
Пользователь создает объект класса QTableWidget и туда заносит итемы setItem(int row,int column ,QString str) переопределил
Каждый итем переопределён под мой класс итема.
При использовании юзер может вводит в таблицу вручную строку или в классе использовать setItem
При работе программы юзер вводит строку (выражение) -> в ячейку ставится посчитаное число, а при редактировании остается введенная пользователем строка (использую роль отображения - число из парсера, роль редактирования - строка пользователя )
Пример spreadsheet Планшета


Забудь про  QTableWidgetItem и QTableWidget  !!!!!!!!!!!!!!!!
У тебя что пользователь запускающий твою прогу сам создает объекты классов и вызывает методы, бедный пользователь.

Опиши задачу, а не то как ты себе представляешь отдельные части ее реализации.

1) Что выводится в самом начале(при запуске проги). Есть ли какие-нибудь данные в таблице. Если есть Какие, Сколько, Откуда беруться
2) Далее что можно делать с исходными данными(как это видит пользователь), и подробнее, мы не телепаты.

Перед тобой таблица 5 колонок 5 строк
Вводишь что тебе надо
В ячейку можешь писать 5+5+5
нажимаешь enter и в ячейке появляется число 15
При нажатии на ячейку с числом 15 для редактирования отображается строка 5+5+5
Выделяешь итемы и после этого строится график
Самый простой вариант для понимания Exel
Записан
spectre71
Гость
« Ответ #29 : Ноябрь 23, 2009, 22:47 »

Перед тобой таблица 5 колонок 5 строк
Вводишь что тебе надо
В ячейку можешь писать 5+5+5
нажимаешь enter и в ячейке появляется число 15
При нажатии на ячейку с числом 15 для редактирования отображается строка 5+5+5
Выделяешь итемы и после этого строится график
Самый простой вариант для понимания Exel

Уже понятнее. Далее, как таблица может принять очень большие размеры, рассказывай.
Записан
Страниц: 1 [2] 3 4 ... 7   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 23.