Яков @Zifix
Qt/QML Developer & UX Designer
Information
- Rating
- 2,544-th
- Location
- Барнаул, Алтайский край, Россия
- Registered
- Activity
Specialization
Chief Executive Officer (CEO)
Lead
From 9,001 $
Qt
Software development
C++
UI/UX design
Project management
Software testing
Teaching in IT
Linux
P.S. Было бы здорово, если бы кто-нибудь из администрации разъяснил политику партии — где проходит эта тонкая грань.
Тут вы правы, мне еще учиться и учиться. Только вот согласно документации, работа с QNetworkAccessManager должна быть построена с использованием механизма слотов и сигналов, как и вся остальная система событий в Qt.
Заблудились в двух собственных методах? Печально.
Хорошо хоть вы до конца понимаете как устроены события в Qt, и просветили нас новеллой с тремя вложенными QEventLoop в программе с тремя классами.
Как уже писали выше, решение использовать QEventLoop выглядит странным, вследствии чего выполняется не менее странная проверка успешности выполнения в том же методе, без использования механизма сигналов/слотов. RequestError имеет всего два состояния, хватило бы возвращать bool. Хотя по сути ошибок может быть значительно больше, что в этой реализации не отлавливается в соответствующем слоте. Исключение как стандартный метод возврата результата в Qt — жуткий моветон, заставлять текущий (возможно главный) поток спать в бесконечном цикле, опять же без сигналов/слотов — быдлокод, и т.д.
Не хотелось бы отбить желание выкладывать код, но если честно, то Request выглядит не сильно полезнее стандартной связки QUrl + QUrlQuery, Network же с одной стороны примитивный, с другой стороны написан криво :/
Если кратко, то вот код:
Тут размер в миллиметрах полностью надежен, в девайсонезависимых пикселах приблизителен, как и на Android (но надо бы потестить на соответствующих девайсах), pt для единообразия при указании размеров шрифта.
Использвать очень просто — умножаем размеры в любом месте QML кода:
Все собираюсь написать статью по таким базовым вещам, но руки пока не доходят :/
Симулировать нельзя, зато можно обеспечить одинаковый размер элементов на всех девайсах вне зависимости от dpi/ppi — хоть в миллиметрах, хоть в пикселах.
Отлаживаем платформозависимый код — значит нужна перекомпиляция. Если он уже отлажен, значит интерфейс пишем на десктопе.
2 пункт спорный, 4 схож с третьим.
Но, тем не менее, статья полезная, наверняка кому-нибудь пригодится.