Просмотр сообщений
|
Страниц: [1] 2 3
|
3
|
Qt / Многопоточное программирование, процессы / Массив буферов producer - customer
|
: Август 03, 2020, 10:36
|
Не могу никак сообразить архитектуру. Есть класс кольцевого буфера. Запись и чтение из которого осущесттвляется с разных потоков. Для синхронизации используется QWaitCondition и QMutex. Они находятся в классе буфера. Все отлично работает. Но логика приложения усложнилась. Потоки producer и customer могут создаваться в процессе работы программы, при этом взаимосвязь между ними может быть любая. например, может быть конфигурация 1 producer -> buffer -> 2 customer, и одновременно с этим еще 1 producer -> buffer -> 1 customer. Итого у нас 2 кольцевых буфера. Я создал класс BufferManager, где начал использовать QMap<буфер>, но QMap никак не защищен, потому что если использовать QMutex, получается deadlock, когда customer ждет данных, а producer не может их записать, так как QMutex заблокирован customer. Как мне защитить QMap?
|
|
|
4
|
Qt / OpenGL / OpenGL ES пунктирная линия в Qt
|
: Март 25, 2019, 09:40
|
Понадобилось отрисовать пунктирную линию. Для этого нужно вот это: glLineStipple(1, 0xAAAA); glDrawArrays(GL_LINE_STRIP, 0, 4);
Но оно не компилируется. Не находит реализацию функции в QOpenGLFunctions. Хотя она стандартна. И проблема именно в Qt, рисую в QQuickFramebufferObject
|
|
|
5
|
Qt / Qt Quick / QML ListView Drag'n'Drop Scroll
|
: Сентябрь 11, 2018, 20:20
|
Делаю Drag'n'Drop итемов в списке ListView. Все прекрасно работает, только до того момента, когда итем переместить нужно, например в конец списка, а все итемы в представлении не помещаются - нужно искпользовтаь интерактивный скролл. Пример, который идет в поставке Qt без скролла. Долго гуглил, ничего нормального не нашел. Включая этот https://stackoverflow.com/questions/40789412/scroll-items-during-drag-and-drop-an-itemПробовал сам. Например по таймеру изменять свойство currentIndex. Таймер запускал, когда происходил детект нужного события. Вроде работает, но через несколько секунд теряется итем, который удерживается мишью. В общем, есть ли у кого идеи или готовое решение?
|
|
|
6
|
Qt / Общие вопросы / Qt plugin передача класса
|
: Декабрь 02, 2017, 01:09
|
Реализую передачу в плагине стороннего класса. Интерфейс: class TaskInterface { public: virtual ~TaskInterface() {} virtual TestA* factory() const = 0; };
Плагин: class Plugin : public QObject, TaskInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "com.R.TaskInterface/1.0" FILE "plugin.json") Q_INTERFACES(TaskInterface)
public: TestA* factory() const { return new TestA; }
};
Все работает, плагин грузится. Теперь мне нужно переопределить класс TestA в плагине. Для теста создал класс TestB, который наследуется от TestA. В TestB ничего не менял и не добавлял. Приинклюдил в хедеру плагина, и больше ничего в хедере не менял: #include "testb.h"
class Plugin : public QObject, TaskInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "com.R.TaskInterface/1.0" FILE "plugin.json") Q_INTERFACES(TaskInterface)
public: TestA* factory() const { return new TestA; }
};
Плагин не грузится ... с ошибкой "undefined symbol: _ZN5TestA16staticMetaObjectE)". В идеале я хочу в методе TestA* factory() const создать экземпляр класса TestB и передать его, но даже его обьявление не работает. WFT?
|
|
|
7
|
Qt / Многопоточное программирование, процессы / Qt Properties thread safe?
|
: Ноябрь 06, 2017, 21:29
|
Нигде не могу насти в документации и гугле ответ на воспрос - потоко - безопасны ли свойства meta object system? Пишу многопоточное приложение с широким использованием properties, при этом мне нужно из одного потока менять свойства объекта, который находится в другом. Нужно ли мне дополнительно об этом заботится, например с помощью мьютексов?
|
|
|
8
|
Qt / Установка, сборка, отладка, тестирование / Тестирование android приложения
|
: Октябрь 10, 2017, 13:15
|
Написал прогу для android. В ней используется qml компонент с рисованием с помощью OpenGL ES 2.0. На моем девайсе все прекрасно. Запустил на работе на samsung galaxy s5 - картинка не отображается ... . Сейчас у меня нет доступа к тому телефону, что бы исправить ситуацию. Но тема не об этом. Тема об тестировании приложения перед публикацией разработчикам, у которых нет доступа к парку телефонов. Собственно кто как поступает? Нашел два сервиса, которые частично решают проблему: https://aws.amazon.com/device-farm/https://www.monkop.com/Частично, потому что как я понял это не заменяет тестирования телефоном, который непосредственно находится в руках. Когда ты проверяешь само поведение программы. Тем более, например у меня, прога работает с специфическим девайсом, который физически подключается к телефону. Можно например создать раздел на форуме, для добровольного тестирования участниками.
|
|
|
9
|
Qt / OpenGL / Использование нескольких буфферов и их наложение
|
: Январь 14, 2017, 16:27
|
Здравствуйте. Мне нужно сделать плавающий график средствами OpenGL ES, что то вроде этого Суть следующая - при поступлении новых данных рисуется в самом вверху точки с координатами y = 1, x = -1 .. 1. Цвет точки в зависимости от данных. Предыдущие данные смещаются вниз. Первое что приходит в голову - создать массив вершин размером к примеру 2048*1024 и каждый раз при поступлении новых данных смещать данные в массиве и отдавать на карточку glDrawArrays. Так как массив большой, смещение будет нагружать ЦП, а еще массив вершин получается нужно хранить в оперативке и в самой графической карте - это как то контр интуитивно!
|
|
|
12
|
Qt / Работа с сетью / QUdpSocket большие пакеты
|
: Декабрь 11, 2016, 20:23
|
По документации writeDiagram возвращает количество переданных байт. Если -1, то пакет слишком большой. Собственно максимальный размер пакета - 32768. Но мне нужно больше. Можно как то увеличить этот размер? Например, указать размер буфера, и т.п. ?
|
|
|
|
|