小编Ver*_*tti的帖子

使用QQuickImageProvider的正确方法是什么?

我需要动态选择qpixmaps以显示在QML Image项目内部。应该从源qpixmap中裁剪出qpixmaps,我将从QML文件中对其进行设置。我希望在QML的第一个需求下使用C ++代码裁剪它们,并将其缓存以备将来使用。对于动态图像操作,应该从QQuickImageProvider派生我自己的类,并将其加载到QML Application Engine。但是我该如何控制源qpixmap?通过财产?如果是,那么我的自定义提供程序必须从QObject派生,并且其实例应在QML中声明,不是吗?但是,如何才能由引擎加载呢?我认为这种实现方式是错误的,但是哪种方法正确?

UPD:好的,我上了一堂课:

class MyQuickImageProvider : public QQuickImageProvider {
public:
    ...
    // This method should set the source image path
    void setPath ( QUrl path );
    // Overriden method of base class; should return cropped image
    virtual QPixmap requestPixmap ( const QString &id, QSize *size, const QSize &requestedSize );
    ...
}
Run Code Online (Sandbox Code Playgroud)

在main.cpp中,它的加载方式为:

QQmlApplicationEngine engine;
...
engine.addImageProvider("my_quick_image_provider", new MyQuickImageProvider(QQmlImageProviderBase::Image));
Run Code Online (Sandbox Code Playgroud)

我想通过QML更改源图像路径。如何使setPath方法可访问?一种明显的方法是将方法声明为Q_INVOKABLE(并从QObject和qmlRegisterType派生MyQuickImageProvider),但是然后我应该在QML源中声明我的类的实例:

MyQuickImageProvider {
    id: my_quick_image_provider
    ...
}
Run Code Online (Sandbox Code Playgroud)

从main.cpp对其进行访问将存在问题。这样的设计对我来说似乎很奇怪。还有更优雅的解决方案吗?

c++ qt image qml

4
推荐指数
1
解决办法
2276
查看次数

在Rust中使用位数组的正确方法是什么?

我需要一个功能与vector<bool>C++ 相同的类.Rust文档说明了BitVec,但在编译期间use std::collections::BitVec导致未解决的导入错误.根据拉动请求,BitVec已被删除.有没有足够的替代品?

bitarray rust

4
推荐指数
1
解决办法
3765
查看次数

C++:在匿名命名空间中声明函数原型的正确方法是什么?

如果我以明显的方式在.h中声明它:

namespace <named_namespace> {
    namespace {
        …
        <type> <function>(<parameters>);
        …
    }
}
Run Code Online (Sandbox Code Playgroud)

并将其实施.cpp,将发生编译错误:

'<type> <named_namespace>::{anonymous}::<function>(<parameters>)' should have been declared inside <named_namespace>

如果不将函数的实现放在单个文件中,是否可以避免此错误?目前我使用关键字static代替,但它会产生多次恼人的警告:

'<type> <named_namespace>::<function>(<parameters>)' declared 'static' but never defined

正如我所理解的那样,只能通过将函数保存在单个文件(标题或源代码)中来禁用它.

欢迎使用交叉编译器解决方案(如果有的话).

或者将头文件拆分为"公共"和"私有"部分更有效?

c++ namespaces private function

3
推荐指数
1
解决办法
535
查看次数

标签 统计

c++ ×2

bitarray ×1

function ×1

image ×1

namespaces ×1

private ×1

qml ×1

qt ×1

rust ×1