2013-03-08 2 views
19

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

Какой виджет следует использовать: QTableWidget или QTableView?

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

ответ

16

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

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

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

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

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

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

+0

Спасибо. Я куплю эту книгу и следую вашему руководству. –

+0

Ссылка на эту ссылку теперь не работает – Claudiu

+0

@Claudiu Спасибо за внимание. Ссылка работает снова. – Phlucious

9

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

QTableWidget или QTableView?

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

+0

Благодарим вас за чтение, что документ примерно в 2-3 раза, начиная получать его. –

Смежные вопросы