Подтвердить что ты не робот

QTableWidget vs QTableView

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

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

И может кто-нибудь, пожалуйста, объясните кратко, что такое структура Model/View? Я не компьютерный научный парень, поэтому мне трудно понять...

4b9b3361

Ответ 1

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

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

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

Ниже приведены основы для модели Qt с учетом модели:

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

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

Ответ 2

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

QTableWidget или QTableView?

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