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

Войти
 
   Начало   Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
Страниц: 1 [2] 3 4 ... 10
 11 
 : Сентября 20, 2025, 16:49 
Автор rik_mik_2raza - Последний ответ от kkmspb
такие вещи надо с помощью отладчика по сырцам решать, 5 минут и все станет очевидно. бага там нет

 12 
 : Сентября 20, 2025, 14:12 
Автор kkmspb - Последний ответ от kkmspb
Я тут новичок, но Qt  использую давно и до сих пор сижу на Qt4 , но речь не об этом. В основном кодю десктоп приложения под винду. И все у меня хорошо, на мой взгляд, все меня устраивает. Чего не хватает в Qt развиваю сам, т.е. добавляю новый функционал, в основном в ветке qt/sql.

Но, по мере погружения в исходники Qt (500 классов вроде), часто стал задумываться - а в чем трудность сделать свой фреймворк и почему таких с++.фреймворков по пальцам пересчитать, при чем одной руки?

Хочу изложить, какое у меня сложилось понимание основных моментов, на которые надо сразу обратить внимание. В чем основные моменты базовых классов.

1. Как ни странно это реализация очереди сообщений от операционной системы.

2. Метаобъектная система, реализация своего QObject аналога.  Тут же и технология сигнал/слот как следствие, причем межпоптоковый вариант тоже должен быть и как раз через очередь сообщений каждого потока отдельно его надо реализовывать.

3. Как ни странно это общий тип данных по примеру QVariant, чтобы кастовать туда сюда разные типы данных как хочу на основе кастомных метаданных, очень удобная фича.

4. Гуй всемогущий! Реализовать парадигму отрисовки виджетов с применением для этого лейаутов или чего-то подобного.

5. Наконец-то сделать нормальные классы для работы с базами данных, CRUD, внешние связи и.д. Но это уже детали.

6. Конечно сетевой протокол с использование openssl не забываем.

Чего ещё забыл? Ах да, надо лет 7 свободного времени. Но по факту Хаавард Норд на пару с ещё с одним студентом  сделали эти примерно 500 классов лет за семь, насколько я знаю. Причем с учётом кроссплатформенности, но я лично ограничился бы для себя виндой пока, хоть это и кощунство.

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

7. Наверное забыл контейнеры типа QMap, QList и т.д.






 13 
 : Сентября 20, 2025, 13:18 
Автор KSergeyP - Последний ответ от kkmspb
Или как у нас QpSqlTableModel скачать. Там и внешние связи по фен Шую реализованы и CRUD нормальный.

 14 
 : Сентября 20, 2025, 13:16 
Автор KSergeyP - Последний ответ от kkmspb
Наследоваться от QSqlRelationalTableModel и переопределить selectStatement например.

 15 
 : Сентября 19, 2025, 12:09 
Автор Anton - Последний ответ от kkmspb
QProgressBar тормозит при setValue (после выхода именно из QProgressBar::paintEvent) 200-300ms

решается только созданием диалога с нашим ProgressBarDlg БЕЗ парента !!

Это работает нормально, и к тому же стили (setStyleSheet) начинают действовать нормально для QProgressBar

и центрирование по середине тоже начинает работать нормально

QProgressBar использует какую-то анимацию, которую не отключить, но причина не в этом, а в том, что есть какая-то связь с родителем, которую пока не раскрутил

 16 
 : Сентября 15, 2025, 12:14 
Автор demaker - Последний ответ от demaker

Спасибо , да!

Код
C++ (Qt)
setSelectionBehavior(QAbstractItemView::SelectRows);
setSelectionMode(QAbstractItemView::ExtendedSelection);
 

 17 
 : Сентября 13, 2025, 20:37 
Автор demaker - Последний ответ от Авварон
я про https://doc.qt.io/qt-6/qabstractitemview.html#SelectionMode-enum

 18 
 : Сентября 13, 2025, 20:34 
Автор demaker - Последний ответ от demaker

Это связано с тем что tablemodel привязана к treview?
Или в коде проблема?






в коде, все вью умеют в разные селекшоны
проверь что флаги позволяют выделать несколько строк вообще


Делаю так

Код
C++ (Qt)
 
Qt::ItemFlags MyTableModel::flags(const QModelIndex &index) const
{
   if (!index.isValid())
       return Qt::NoItemFlags;
 
   return QAbstractTableModel::flags(index) | Qt::ItemIsSelectable;
 
}
 

Причем если поменять QAbstractTableModel на
QAbstractItemModel будет падать приложение

 19 
 : Сентября 13, 2025, 19:13 
Автор demaker - Последний ответ от Авварон

Это связано с тем что tablemodel привязана к treview?
Или в коде проблема?



в коде, все вью умеют в разные селекшоны
проверь что флаги позволяют выделать несколько строк вообще

 20 
 : Сентября 13, 2025, 00:58 
Автор demaker - Последний ответ от demaker
Используй QTreeView с uniformRowHeights=true https://doc.qt.io/qt-6/qtreeview.html#uniformRowHeights-prop - так оно будет вычислять скроллбар как firstRowHeight*rowCount() а не суммировать в цикле.

Не получается выделить несколько строк.

Делаю так:
Код
C++ (Qt)
void  TreeView::mousePressEvent(QMouseEvent *e)
{
   if(e->modifiers() & Qt::Controlmodifier)
  {
      QModelIndex idx = indexAt(e->pos());
 
      QModelIndex topLeft = model()->index(idx.row(), 0, QModelIndex());
      QModelIndex bottomRight = model()->index(idx.row(), model()->columnCount() - 1, QModelIndex());
 
      QItemSelection selection(topLeft, bottomRight);
      selectionModel()->select(selection, QItemSelectionModel::Select);
  }
 
  return QTreeView::mousePressEvent(e);
}
 

Это связано с тем что tablemodel привязана к treview?
Или в коде проблема?


Страниц: 1 [2] 3 4 ... 10

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