QTableWidget против QTableView

Я новичок в этой модели / View Framework Qt. В моем приложении я хочу иметь 1000 х 1000 клеток. Должно быть минимальное требование к памяти & это должно быть быстро. Я не знаю, для чего эта терминология модели. Но у меня есть свой собственный класс, который знает, как обращаться с двойными переменными, хранящимися в таблице. В настоящее время я использую QLineEdit с Validator для создания массива ячеек. Но это было слишком медленно для ячеек> 50 х 50. Поэтому я решил пойти по старому доброму пути в MS Excel.

Итак, какой виджет я должен использовать: QTableWidget или же QTableView?

И кто-нибудь может объяснить вкратце, что это за модель / представление? Я не специалист по компьютерным наукам, поэтому мне трудно это понять …

23

Решение

Рекомендация cmannett85 хорошая. Читайте документы около десятка раз.

Затем, если ваши проблемы с производительностью и памятью являются вашей главной задачей, и вы думаете, что можете превзойти реализацию QTableWidget, тогда QTableView интерфейс на вершине QAbstractTableModel или же QStandardItemModel это то, что вы ищете.

Поскольку вы новичок в архитектуре представления моделей Qt, я бы рекомендовал использовать QStandardItemModel, пока не почувствуете, что освоили его. Если ваша производительность по-прежнему недостаточно высока, избегайте большого количества дублирования памяти и ненужных объектов, реализуя собственную модель. Плюс, возьми себя хороший учебник и прочитайте его главу о структуре представления модели около 12 раз. Один только этот раздел был на вес золота, imho.

Вот основы для пользовательского каркаса представления модели Qt:

  • Ваш фактические данные хранится где-то в списке / дереве
  • модель предоставляет стандартную структуру для запросов и редактирования ваших данных
  • Модели прокси позволяют сортировать / фильтровать данные, не влияя на исходную модель
  • Посмотреть обеспечивает средство визуально наблюдать а также взаимодействовать с ваши данные
  • Делегаты (часто необязательно) настраивают внешний вид ваших данных и предоставляют настраиваемые редакторы данных

Если вы чувствуете себя как дешево и смело, проверьте этот отрывок на реализацию вашей собственной модели. Работайте над ним по одной функции за раз и играйте с ней по ходу дела.

17

Другие решения

Чтобы понять рамки, начните с документация об этом. Это начинается медленно, но становится умеренно обширным и охватывает большинство участвующих классов.

QTableWidget или QTableView?

Прочитав документацию, вы поймете, почему этот вопрос не имеет никакого смысла: QTableWidget использования QTableView для отображения данных. QTableWidget (вместе с QTreeWidgetи т. д.) использует инфраструктуру MVC, но она инкапсулирует все это в удобный пакет, полезный для большинства целей, но если вам нужно сделать что-то другое, вам придется разбить его на его составные части и переопределить нужные биты.

10

По вопросам рекламы [email protected]