Инструменты пользователя

Инструменты сайта


develop:qt:quick3

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:qt:quick3 [2021/09/01 15:31]
admin
develop:qt:quick3 [2021/09/04 10:55] (текущий)
admin
Строка 906: Строка 906:
     title: "Factorial Calc"; width: 250; height: 80;     title: "Factorial Calc"; width: 250; height: 80;
     visible: true     visible: true
-    Calculatoin+    Calculation
     {     {
         id: calc         id: calc
Строка 1077: Строка 1077:
 === Класс QQuickImageProvider ==== === Класс QQuickImageProvider ====
 ---- ----
 +Этот класс является неким объектом, который возвращает запрашиваемое изображение (QImage либо QPixmap), запрашивается оно из QML по имени файла (либо какой-нибудь условный идентификатор), зарегистрированный ImageProvider типа папка, а идентификатор имя файла.\\
 +Т.к. ImageProvider возвращает (методом request) изображение в как таковом виде (тип данных image/pixmap), его можно всячески модифицировать перед отправкой, или даже вовсе создать в этом методе, либо организовать некую логику, на основании переданных данных например..\\
  
 +<details>
 +<summary>:!: Пример: Яркость изображения</summary>
  
 +**ImageProvider.h**
 +<code cpp-qt>
 +#ifndef IMAGEPROVIDER_H
 +#define IMAGEPROVIDER_H
 +#include <QQuickImageProvider>
 +#include <QObject>
 +#include <QImage>
  
-<details> +class ImageProvider: public QQuickImageProvider 
-<summary>:!Пример: </summary> +
-<code QML>+private: 
 +    QImage brightness(const QImage &imgOrig, int n); 
 + 
 +public
 +    ImageProvider(); 
 +    QImage requestImage(const QString&, QSize*, const QSize&); 
 +};
  
 +#endif // IMAGEPROVIDER_H
 </code> </code>
-</details> 
  
  
-<details+**ImageProvider.hpp** 
-<summary>:!Пример: </summary>+<code cpp-qt
 +#include "imageprovider.h" 
 + 
 +ImageProvider::ImageProvider(): QQuickImageProvider(QQuickImageProvider::Image) 
 +
 +
 + 
 +QImage ImageProvider::brightness(const QImage &imgOrig, int n) 
 +
 +    QImage imgTemp= imgOrig; 
 +    qint32 nHeigt= imgTemp.height(); 
 +    qint32 nWidth= imgTemp.width(); 
 + 
 +    for(qint32 y= 0; y < nHeigt; ++y) 
 +    { 
 +        QRgb *tempLine= reinterpret_cast<QRgb*>(imgTemp.scanLine(y)); 
 +        for(qint32 x= 0; x < nWidth; ++x) 
 +        { 
 +            int r= qRed(*tempLine) + n; 
 +            int g= qGreen(*tempLine) + n; 
 +            int b= qBlue(*tempLine) + n; 
 +            int a= qAlpha(*tempLine); 
 + 
 +            *tempLine++ = qRgba(r > 255 ? 255 r < 0 ? 0:r, 
 +                                g > 255 ? 255 0 ? 0:g, 
 +                                b > 255 ? 255 : b < 0 ? 0:b, 
 +                                a); 
 +        } 
 +    } 
 +    return imgTemp; 
 +
 + 
 +QImage ImageProvider::requestImage(const QString &strId, QSize *ps, const QSize &requestedSize) 
 +
 +    QStringList lst= strId.split(";"); 
 +    bool bOk= false; 
 +    int nBrightness= lst.last().toInt(&bOk); 
 +    QImage img= brightness(QImage(":/"+ lst.first()), nBrightness); 
 + 
 +    if(ps) 
 +        *ps= img.size(); 
 + 
 +    return img; 
 +
 +</code> 
 + 
 + 
 +**main.hpp** 
 +<code cpp-qt> 
 +#include <QGuiApplication> 
 +#include <QQmlApplicationEngine> 
 +#include "imageprovider.h" 
 + 
 +int main(int argc, char** argv) 
 +
 +    QGuiApplication app(argc, argv); 
 +    QQmlApplicationEngine engine; 
 +    engine.addImageProvider(QLatin1String("brightness"), new ImageProvider); 
 +    engine.load(QUrl("qrc:/main.qml")); 
 + 
 +    return app.exec(); 
 +
 +</code> 
 + 
 + 
 +**main.qml**
 <code QML> <code QML>
 +import QtQuick 2.8; import QtQuick.Controls 2.2
  
 +ApplicationWindow
 +{
 +    title: "Brightness"; width: controls.width; height: controls.height;
 +    visible: true
 +    Column
 +    {
 +        id: controls
 +        Image
 +        {
 +            id: img
 +            source: "image://brightness/11.jpg;"+ sld.brightnessValue
 +        }
 +        Slider
 +        {
 +            id: sld
 +            width: img.width
 +            value: 0.75
 +            stepSize: 0.01
 +            property int brightnessValue: (value * 255 -127)
 +        }
 +        Text
 +        {
 +            width: img.width
 +            text: "<h1>Brightness: "+ sld.brightnessValue+ "</h1>"
 +        }
 +    }
 +}
 </code> </code>
 </details> </details>
- 
develop/qt/quick3.1630510262.txt.gz · Последнее изменение: 2021/09/01 15:31 — admin