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

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

Голосование
Вопрос: Что лучше выбрать для больших данных 5000*5000 и все они будут отображатся на таблице?
БД - 6 (33.3%)
QTableWidget - 2 (11.1%)
QAbstractTableModel & QTableView - 10 (55.6%)
другой тип (укажите) - 0 (0%)
Всего голосов: 3

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Для таблицы типа exel, spreadsheet. Помогите новичку.  (Прочитано 17847 раз)
daimon
Гость
« Ответ #15 : Декабрь 13, 2009, 17:14 »

Как решить проблему с большим потребленией памяти для QAbstractTableModel (таблица 5000*5000- забита строками QString)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Декабрь 13, 2009, 18:09 »

Как решить проблему с большим потребленией памяти для QAbstractTableModel (таблица 5000*5000- забита строками QString)
Всегда есть ЗАДАЧА и она определяет что нужно а что нет. Если Вы делаете "просто таблицу" - это, скажем, тема лабораторной работы и сделать это можно за несколько дней или быстрее. А если Вы делаете "таблицу которая работает с большими данными" (1-2 Gb и более) - то это уже совсем др. задача которая может быть темой курсового или даже дипломного проекта - потому что работы в десятки раз больше.

Поэтому не начинайте обсуждать серьезные вещи "просто так", из баловства. Сделайте сначала "просто таблицу" - до работы с большими данными Вам еще пахать и пахать  Улыбающийся
Записан
daimon
Гость
« Ответ #17 : Декабрь 13, 2009, 18:16 »

Как решить проблему с большим потребленией памяти для QAbstractTableModel (таблица 5000*5000- забита строками QString)
Всегда есть ЗАДАЧА и она определяет что нужно а что нет. Если Вы делаете "просто таблицу" - это, скажем, тема лабораторной работы и сделать это можно за несколько дней или быстрее. А если Вы делаете "таблицу которая работает с большими данными" (1-2 Gb и более) - то это уже совсем др. задача которая может быть темой курсового или даже дипломного проекта - потому что работы в десятки раз больше.

Поэтому не начинайте обсуждать серьезные вещи "просто так", из баловства. Сделайте сначала "просто таблицу" - до работы с большими данными Вам еще пахать и пахать  Улыбающийся
В том то и дело что уже есть таблица на базе QTableWidget (сортировка, поиск/замена, вставка, копирования, вырезание, пересчёт ячеек, ячейка вычесляется с помощью парсера и т.д.)
Записан
daimon
Гость
« Ответ #18 : Декабрь 13, 2009, 18:23 »

Примитивная таблица из QTableWidget готова, теперь можете ответить на вопрос про модель? Я просто уже курсач делаю месяц и хочу сделать его продуманным.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Декабрь 13, 2009, 18:49 »

Примитивная таблица из QTableWidget готова, теперь можете ответить на вопрос про модель? Я просто уже курсач делаю месяц и хочу сделать его продуманным.
Работа с большими данными предполагает свап на диск, организацию подкачки страницами и.т.п. Это непросто даже для данных фиксированной длины. Для данных как QString (т.е. произвольного размера) трудности многократно возрастают. Короче это совсем не "маленькое дополнение/фича" к уже имеющейся таблице, а новая работа которая превышает выполненную во много раз.

Как правило, если данные велики, намного проще и лучше использовать БД чем управлять такими данными самому. Но не везде это подходит (напр для тех же excel таблиц БД может быть недостаточно гибкой). 

Я бы посоветовал думать реально и в рамках реальной задачи а не "растекаться мыслью по древу". Обсуждать таблицу 5Кх5К имеет смысл только если она реально есть (т.е. есть заказчик которому такая вещь нужна и который готов платить за нее). Иначе все мгновенно превращается в беспредметные фантазии (что я и вижу в запущенных Вами темах  Улыбающийся)
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #20 : Декабрь 13, 2009, 20:09 »

Igors, ты ему дай ссылку на свой текстовый редактор для огромных файлов, пусть по изучает.
Записан

Юра.
daimon
Гость
« Ответ #21 : Декабрь 13, 2009, 20:31 »

Igors, ты ему дай ссылку на свой текстовый редактор для огромных файлов, пусть по изучает.
Можно пример текстового редактора??
« Последнее редактирование: Декабрь 13, 2009, 20:50 от daimon » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Декабрь 13, 2009, 20:47 »

Igors, ты ему дай ссылку на свой текстовый редактор для огромных файлов, пусть по изучает.
Можна пример текстового редактора??
МожнО
http://www.prog.org.ru/topic_11267_0.html
Ну то правда не редактор а вьюер и не на всех платформах он работает. Исходники смотреть можно но необязательно, просто почитайте тему и поймите что это совсем НЕ просто и незачем лезть в проблемы больших данных "просто так".
Записан
daimon
Гость
« Ответ #23 : Декабрь 13, 2009, 21:05 »

Igors, ты ему дай ссылку на свой текстовый редактор для огромных файлов, пусть по изучает.
Можна пример текстового редактора??
МожнО
http://www.prog.org.ru/topic_11267_0.html
Ну то правда не редактор а вьюер и не на всех платформах он работает. Исходники смотреть можно но необязательно, просто почитайте тему и поймите что это совсем НЕ просто и незачем лезть в проблемы больших данных "просто так".
big text ->LargeTextView не компилится (проблема с линкованием)
Код:
1>------ Build started: Project: LargeTextView, Configuration: Debug Win32 ------
1>MOC LargeTextView.h
1>Compiling...
1>moc_MainWindow.cpp
1>moc_LargeTextView.cpp
1>main.cpp
1>MainWindow.cpp
1>LargeTextView.cpp
1>Generating Code...
1>Linking...
1>MainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QFormBuilder::~QFormBuilder(void)" (__imp_??1QFormBuilder@@UAE@XZ) referenced in function "class QWidget * __cdecl `anonymous namespace'::LoadWidget(class QWidget *,char const *)" (?LoadWidget@?A0x125fbeec@@YAPAVQWidget@@PAV2@PBD@Z)
1>MainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual class QWidget * __thiscall QAbstractFormBuilder::load(class QIODevice *,class QWidget *)" (__imp_?load@QAbstractFormBuilder@@UAEPAVQWidget@@PAVQIODevice@@PAV2@@Z) referenced in function "class QWidget * __cdecl `anonymous namespace'::LoadWidget(class QWidget *,char const *)" (?LoadWidget@?A0x125fbeec@@YAPAVQWidget@@PAV2@PBD@Z)
1>MainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QFormBuilder::QFormBuilder(void)" (__imp_??0QFormBuilder@@QAE@XZ) referenced in function "class QWidget * __cdecl `anonymous namespace'::LoadWidget(class QWidget *,char const *)" (?LoadWidget@?A0x125fbeec@@YAPAVQWidget@@PAV2@PBD@Z)
1>debug\LargeTextView.exe : fatal error LNK1120: 3 unresolved externals
1>Build log was saved at "file://f:\Downloads\Compressed\bi_text\BigText\Sources\LargeTextView\debug\BuildLog.htm"
1>LargeTextView - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Декабрь 13, 2009, 21:08 »

big text ->LargeTextView не компилится (проблема с линкованием)
Нужна библиотека QtDesigner
Записан
daimon
Гость
« Ответ #25 : Декабрь 13, 2009, 21:12 »

big text ->LargeTextView не компилится (проблема с линкованием)
Нужна библиотека QtDesigner
У меня он есть, подключаю - говорит немогу найти. В чём дело?
« Последнее редактирование: Декабрь 13, 2009, 21:45 от daimon » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #26 : Декабрь 14, 2009, 07:56 »

в pro-файле отсутствует строчка:
CONFIG += designer
Записан

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #27 : Декабрь 14, 2009, 08:18 »

Igors, в той теме закинул коррективы программы.
Записан

Юра.
daimon
Гость
« Ответ #28 : Декабрь 14, 2009, 11:16 »

Код
C++ (Qt)
class Item
{
mutable QString read;
mutable QString edit;
public:
Item()
{
read="";
edit="";
}
Item(QString read_,QString edit_)
{
read=read_;
edit=edit_;
}
void setEdit(QString edit_)
{
edit=edit_;
read=edit+"2";
}
/*void setRead(QString read_)
{
read=read_;
}*/

QString Read() const
{
return read;
}
QString Edit()const
{
 
return edit;
}
};
 
QHash<QPair<unsigned int,unsigned int>,Item> hash_items;

Как лучше вычеслять роль дисплея в setData и записывать в хеш (меняя в классе Item значение read) или  
 или создать QHash<QPair<unsigned int,unsigned int>,QString> hash_items; и вычеслять роль дисплея всегда в data(int role)?

Вычеслять значит - EditRole 2+2 DisplayRole 4 (parser уже есть)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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