Павел @kkmspb
фулстек разработчик С, С++,PHP,JS
Information
- Rating
- Does not participate
- Location
- Парголово, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Fullstack Developer
Senior
From 250,000 ₽
OOP
Database
MySQL
PHP
C++
Programming microcontrollers
Qt
Software development
Development of drivers
C
Да согласен с конструкторами не корректно написал. Вот два конструктора public и второй protected:
Это сделано как в QTableView в.т.ч. Но ошибки линковки присутствуют. Собственно откуда можно линковщику найти реализацию _q_rowsRemoved , в библиотеках Qt их нет (точнее они не экспортируемые).
new MyViewPrivate логично не слинкуется
Речь об этом примерно (myview.h):
myview.cpp:
Не знаю как сюда подцепить файл с проектом, поэтому ссылка:
https://kkmspb.ru/development/Qt/private-classes-paradigma.php
Короче - почему не получается юзать приватный функционал Qt снаружи от исходников Qt
Ваш пример конечно нормально собирается, но вы не наследует приватный класс QAbstractViewItemPrivate.
Соответственно тут нет проблем, но нет и смысла. Вам надо в своем cpp иметь доступ к методам приватного класса QAbstractItemView, чтобы использовать приватный функционал.
Вы сможете конечно сделать так в myview cpp:
Q_D(QAbstractItemView);
И сможете использовать конструкцию d-> . Но это не решит полностью проблему сборки вашего проекта.
У меня есть тестовый небольшой проект для этого, я постараюсь скинуть ссылку в ближайшее время.
На самом деле gui ветка собирается минуту, если что-там немного подправить и минуты 4-5 полная переборка ветки.
Это про динамику (не статику)
Чтобы унаследовать QPTableView от QWidget (или QFrame), надо похоже ещё самому и QAbstractScrollArea реализовать. Задача не сложная, но оставим на будущее (а то так недолго и свой фреймворк написать)
Спс, интересно, там наследование прямо от QWidget
class QAIVLIBSHARED_EXPORT QAdvancedTableView : public QWidget
Такой вариант в голову ещё не приходил. И это хорошая идея.
Спс, посмотрим, такого не находил
Не получается пока никак без перекомпиляции. Мы наследуемся напрямую от QAbstractItemView (это для таблиц). У QAbstractItemView определен экспорт Q_GUI_EXPORT.
У QAbstractItemView есть приватный спутник QAbstractItemViewPrivate, в котором реализована часть функционала. У QAbstractItemViewPrivate экспорт отключен (см Q_AUTOTEST_EXPORT). Короче все методы QAbstractItemViewPrivate наружу в библиотеке не торчат, но QAbstractItemView их дергает. В общем штатно если вы унаследуетесь от QAbstractItemView вы не собирёте проект иначе как в составе исходников Qt. При линковке не найдены будут методы QAbstractItemViewPrivate .
Во всяком случае у меня никак не получается.
Тут такой момент, что склеивая 3 и N столбца в один остаётся вопрос, а как теперь редактировать каждую иэ склеенных колонок (столбцов) ведь необходимость такая может быть. Склейка это span функционал в QTableView.
Я такого не встречал. Модель данных работает штатно как и раньше, ее не трогаем.
QTableView у нас полностью свой, но работает по старому принципу. Для каждого поля (колонки) модели данных мы задаём на вьюпорте прямоугольник, куда отрисовываем содержимое из модели данных. Располагать прямоугольники мы можем, где угодно.
В общем-то и все.
Насчёт редактирования, то при щелчке мыши на ячейке, мы имеем координаты клика, по которому определяем прямоугольник ячейки и номер строки/колонки (модели данных) и передаём делегату по умолчанию ( или вами переопределенному) координаты ячейки куда себя (делегата) отрисовать. Все просто.
Не надо я уже для себя все решил уже и другим предлагаю если интересно бесплатно воспользоваться, чувствуете разницу?
Я много-го не прошу сделайте, если знаете, демку с таким функционалом. Если не знаете не продолжайте.
Это кому как интереснее. Когда вы не сможете понять почему на Qml что-то не так как вам надо отрисовывается вы полезете отладчиком в исходники или смиритесь и оставите все как есть.
Вопрос абстрактный и бессмысленный уводящий во флуд. Я практик, мыслю категориями можно или нельзя.
И уже подозреваю на 99%, что в Qt6 ничего относительно QTableView не изменилось
Я про вывод колонок (модели данных) в строке таблицы по шаблону (многорядно).
Насколько я знаю qml это скриптовая оболочка, которая использует Q_PROPERTY классов С++. И если в классах не реализован какой-то функционал, то откуда в Qml он появится.
Соглашусь, но я бы назвал это зависимостью первого уровня, а от интерпретирования команд зависимостью второго уровня и т.д.
Подозреваю, что сам питон пишется на С++ , компилируется и линкуется под разные платформы.
Спасибо за ликбез. Действительно OpenGL, DirectX11, DirectX9 ничего такого пока не надо было. Графику svg Qt 4 умеет. HiDPI даже пока не понимаю зачем.
Давайте ограничим список языком С++, открытыми исходниками и инструментом компилятор/линковщик. То что вы приводите уже интерпретаторы и вы становитесь заложником какой-то фирмы - будет она делать свою библиотеку кроссплатформенно? Ну например Microsoft? Уже звучит глупо.
Питон конечно кроссплатформенность будет поддерживать, но как и у любого интерпретатора если что-то заглючило, то ты заложник их ошибок. То есть тебя лишают свободы (образно говоря).
Кстати Delphi/Lazarus наверное хороший пример, там отрисовка нативная (насколько я помню), но begin/end просто невыносимо.
нет просто забыл как буква пишется