Pull to refresh

Comments 24

По-моему, для многих операций, выполненных Вами, есть стандартные методы…
Например радиус скругления — точно помню, что в Qt Quick радиус скругления задать можно, значит 100% в библиотеке же реализовано! А градация серого — это же неактивная иконка, тоже наверняка есть…

В итоге смысл статьи сводится к асинхронной загрузке, что почти элементарно с помощью QNetworkAccessManager…
Ну, разумеется, что-то уже реализовано. Но это ещё надо найти — а не каждый будет перекапывать кучу исходников Qt чтобы понять, как в QML углы скругляются.

Кроме того, рассматриваются и другие эффекты. Равно как и синхронная загрузка изображений через QNetworkAccessManager.

Хотя, конечно, надо будет почитать исходники QGraphicsDropShadowEffect, дабы добавить к тени размытие.
Основная цель статьи — польза. Если она есть — статья имеет право существовать, а польза в ней есть, конечно же, например разобраться в алгоритмах или попробовать написать свои.

Но главное, чтобы неискушенные люди не взяли такой подход за основу — библиотечная реализация, как правило, сделана лучше (бывают исключения)!
Ну, для неискушённых тут мало пользы, разве что действительно Sync/Async HTTP-запросы.

А если есть библиотечная реализация работы с изображениями на Qt, то я был бы рад увидеть Public-API к ней =)

Но, увы, много к чему Qt не даёт public-доступа, и «использовать библиотечную реализацию» превращается в «копипастить из библиотечной реализации»…
Кстати в Sync/Async методах есть одинаковый кусок, который так и просится в отдельный приватный метод.
Согласен, когда писал этот код (несколько месяцев назад), хотел выделить, но отложил, да так и забыл.
ИМХО, это статья чтобы её нагуглили. И она очень поможет всем тем, кто не осилил загрузить картинку с нета для своей проги.
Надеюсь, кому-то от неё польза будет. =)
Кстати, рекомендую почитать статьи и комменты автора критики к этой статье QtRoS. Человек достойный, заминусован несправедливо.
Я читал, спасибо, статьи действительно интересные.
Библиотечная реализация эффектов как раз через ЖО сделана и в Qt5 её не будет.
Я не эффекты только имел ввиду и прекрасно знаю, что их уберут. Спасибо.
QMap requests

Ну typedef же напрашивается!

typedef QPair UrlPair;
typedef QPair ObjectUrlPair;
typedef QMap RequestMap;
RequestMap requests;

ЗЫ Для первых 2-х конечно имена нужно подобрать, которые будут более хорошо объяснять контекст, я просто сходу написал.
Парсер слопал параметры темплейтов =)
Но не важно, мысль ясна. Как будет время, поправлю.
Тег source отлично работает:
typedef QPair<QUrl, const char*> UrlPair;
typedef QPair<QObject*, UrlPair> ObjectUrlPair;
typedef QMap<QNetworkReply*, ObjectUrlPair> RequestMap;
RequestMap requests;
Лучше посмотрите как это все на шейдерах делается и лучше на похожую статью из labs.qt.nokia.com
Так то на Qt Quick, а я немного про другое =)
Так в кто мешает шейдеры в QPainter'е юзать. Они же фактически на текстуру накладываются.
Ну так опиши — обстоятельно, с примерами =)
И все порадуются ;)
Извините — не удержался. Ну это.

>> QMap requests

Это не просто ужас, а очень очень ужас. Я потратил секунд 15 чтобы до меня дошло что ЭТО.

Все остальное вам уже показали собственно говоря… в целом статья полезная.

>> статья чтобы ее загуглили

Это же не модно). GoGoDaddy рулит.
хаюрапарсер съел строку QMap ^ QNetworkReply*, QPair^QObject*, QPair^QUrl, const char * v v v requests

Я поменял, ну там поймете).
Немного не понял зачем столько возни с закруглёнными углами. Просто рисуем прямоугольник со скруглёнными углами, а потом картинку. Сокращая Ваш код, примерно так:
QImage shapeImg(QSize(size, size), QImage::Format_ARGB32_Premultiplied);
shapeImg.fill(Qt::transparent);
QPainter sp(&shapeImg);
sp.setRenderHint(QPainter::Antialiasing);
sp.setPen(QPen(Qt::color1));
sp.setBrush(QBrush(Qt::color1));
sp.drawRoundedRect(QRect(0, 0, size, size), radius + 1, radius + 1);
sp.setCompositionMode(QPainter::CompositionMode_SourceIn);
sp.drawImage(0, 0, squared(image, size));
sp.end();
return roundSquaredImage;
Да, действительно так оптимальнее.
Спаисбо за замечание!
Sign up to leave a comment.

Articles