小编der*_*erM的帖子

如何使用QtVirtualKeyboard

我尝试将其集成QtVirtualKeyboard到原型中,但我失败了.这是我第一次使用多个项目,或者我必须在QML/QMake-Project中包含非基本内容.

我从git-repository获得了代码并成功运行了这些示例.但现在我很困惑如何将它整合到我自己的项目中.

我的项目结构如下

Proto (dir)
 +- Proto.pro
 +- main.cpp
 +- ...
 +---QML (dir)                     <--- QML-Files
 |    +-main.qml
 |    +---CustomControls (dir)
 |    +---...
 +---CPP (dir)                     <--- C++-Files and Headers
 +---RES                           <--- Icons and stuff
Run Code Online (Sandbox Code Playgroud)

现在我想我可能只是将src-project从虚拟键盘添加到root-folder(Proto),并添加如下内容:

SUBDIR += src/src.pro
Run Code Online (Sandbox Code Playgroud)

to Proto.pro-file
=>是的,我可以这样做,但它没有任何优点.

那么我需要做什么才能真正使用呢?这一定非常简单,因为我无法在google,youtube或SO上找到任何关于它的问题.

编辑=>我仍然失败.这是我的故事:

我尝试了部署方法,按照这里的说明进行操作.
由于我更喜欢​​在应用程序中使用键盘,因此我执行了以下操作:

  1. 我添加了 - make install步骤
  2. 我通过qmake了另一个论点"CONFIG+=disable-desktop

它似乎工作.在提到的目录中获得了新文件:

  • C:\ Qt\Qt5.7.0\5.7\mingw53_32\qml\QtQuick\VirtualKeyboard
  • C:\ Qt\Qt5.7.0\5.7\mingw53_32\qml\QtQuick\Virtualkeyboard\Styles
  • C:\ Qt的\ Qt5.7.0\5.7\mingw53_32 \插件\ …

qt qml qt5.7 qtvirtualkeyboard

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

管理在Signals中传递给QML的C++ QObject的生命周期

TL; DR
如何正确传递信息,QObject将QML 包装成可能以高频率发出的信号,减少开销,确保对象/引用至少超过连接插槽的执行?


我有一个C++ QObject注册为QML类型.这个对象有一些信号

void someSignal(InformationQObject* someInformation)
Run Code Online (Sandbox Code Playgroud)

其中我没有在单独的参数中传递所有信息但是在一个对象中 - 类似于在例如信号中找到MouseArea的信号

void clicked(QQuickMouseEvent *mouse)
Run Code Online (Sandbox Code Playgroud)

现在我想知道正确的终身管理someInformation.

到目前为止,在我的目标中,我有一个成员:

InformationQObject* m_lastInformation
Run Code Online (Sandbox Code Playgroud)

并发送我使用的信号:

void sendMySignal(/* possible params */)
{
    delete m_lastInformation
    m_lastInformation = new InformationQObject(/* right params here */)
    emit someSignal(m_lastInformation)
}
Run Code Online (Sandbox Code Playgroud)

现在这似乎是错的.

理由:如果你看一下QQuickMouseArea它们的执行情况,就会采用不同的方式.看起来他们并没有为每个事件创建一个新对象,而是回收现有事件.我发现很难找到他们的所有来源,但我认为他们的一个文件中的这个评论给出了一个很好的理由:

QQuickPointerEvent用作长期存在的对象,用于在事件传递期间存储与指点设备(例如鼠标,触摸或平板电脑事件)中的事件相关的数据.它还提供了稍后可用于将事件暴露给QML的属性,与QQuickMouseEvent,QQuickTouchPoint,QQuickKeyEvent等相同.由于一次只能传递一个事件,因此该类实际上是单例.我们不担心QObject开销,因为实例是长期的:我们不会为每个事件动态创建和销毁此类型的对象.

但这是让我看到它变得复杂的地方,他们是如何做到的.这个评论是关于a QQuickPointerEvent.有一个QQuickPointerMouseEvent.在他们的信号中他们通过了QQuickMouseEvent*

后者是指向其中一个成员的指针QQuickMouseEvent quickMouseEvent.

在某些时候,不知何故,这个指针在QML中变得无效

MouseArea {
    anchors.fill: parent
    property var firstEvent
    onClicked: {
        if (firstEvent === undefined) firstEvent = mouse
        console.log(mouse.x, mouse.y)
        console.log(firstEvent.x, …
Run Code Online (Sandbox Code Playgroud)

c++ qt qml qt5 qtquick2

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

将来自不同类(或名称空间)的ENUMS用于从QML调用的插槽

我有一个类(例如MyEnumClass,Q_GADGET),其中我限定enum,例如MyEnum.
我调用Q_ENUM(MyEnum)它将它注册到metaobject,并将整个类注册为QML的不可创建类型.

在我的第二个类(MyObject : QObject使用宏Q_OBJECT)中,我有一个使用MyEnumas参数的插槽.此对象作为常规类型注册到QML(可创建).

我想从QML调用带有值的插槽MyEnum- 这会失败,因为Type MyEnumClass::MyEnum似乎未知.

当使用插槽在类中定义枚举时,它可以正常工作.


MVCE

class MyEnumClass {
    Q_GADGET
public:
    enum MyEnum {
        E1,
        E2,
        E3
    };
    Q_ENUM(MyEnum)
};


class MyObject : public QObject
{
    Q_OBJECT

public:
    MyObject(QObject* parent = nullptr) : QObject(parent) {}

    enum TestEnum {
        V1,
        V2,
        V3
    };
    Q_ENUM(TestEnum)

public slots:
    void testFun1(MyEnumClass::MyEnum val) { qDebug() << val; }
    void testFun2(TestEnum val) { …
Run Code Online (Sandbox Code Playgroud)

enums qt qml qt5

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

使用Pyplot进行光滑表面绘图

我的问题几乎与此相似: 从矩阵平滑表面图

只是我的工具集是matplotlib和numpy(到目前为止).

我成功地生成了一个X,Y和Z网格来绘制

fig = plt.figure(figsize=(12,12))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='summer', rstride=1, cstride=1, alpa=None)
Run Code Online (Sandbox Code Playgroud)

然而,由于价值观非常突然,它看起来非常糟糕. Exampleplot  - 非常前卫,丑陋......不可用和东西

我想让事情变得平滑,至少使顶点连接起来,或者看起来像那样.

我的数据生成如下:我有一个功能

svOfMatrix(x, y)
Run Code Online (Sandbox Code Playgroud)

它产生一个依赖于x的矩阵,计算其y次幂,选择列和行的子集,并计算最大奇异值.所以,Z [x,y]是svOfMatrix(x,y)

由于这个计算非常昂贵,我不想让x的步骤太小,并且Y必然是整数.
此外,即使是非常小的步骤,也可能会有一些变化,我不想看到.所以我想以某种方式插入它.我找到了 http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/interpolate.html, 但我没有让它发挥作用.

python numpy matplotlib

2
推荐指数
1
解决办法
9853
查看次数

错误Android Mobile Vision用于条形码扫描

我正在尝试在此链接中实现本教程的第二部分:

http://code.tutsplus.com/tutorials/reading-qr-codes-using-the-mobile-vision-api--cms-24680

我收到错误:

BarcodeDetector has private access at..

错误图像在这里

知道为什么吗?

public class ScanActivity extends Activity {
SurfaceView cameraView;
TextView barCodeInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scan);
        cameraView = (SurfaceView) findViewById(R.id.camera_view);
        barCodeInfo = (TextView) findViewById(R.id.code_info);

        BarcodeDetector  barcodeDetector = new BarcodeDetector().Builder(this).setBarcodeFormats(Barcode.QR_CODE)
                .build();
    }
}
Run Code Online (Sandbox Code Playgroud)

android barcode-scanner google-play-services

2
推荐指数
1
解决办法
659
查看次数

在QML中创建一个新的JavaScript对象

我正在尝试在QML中创建一个新的javascript对象。

在javascript中,我将简单地:

var newObject = new Object();
Run Code Online (Sandbox Code Playgroud)

但这被QtCreator标记为错误

有人可以帮忙吗?

javascript qml

2
推荐指数
1
解决办法
999
查看次数

打开和关闭附加窗口 (QML)

目前我有一个以下列方式打开的窗口:

property variant win
Button {
    id: testButton
    MouseArea {
        onClicked: {
            var component = Qt.createComponent("test.qml");
            win = component.createObject(testButton);
            win.show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 创建这样的窗口是否可以,或者有更好的方法来做到这一点(来自 QML,而不是来自 C++)?

  2. 当我关闭这个附加窗口时(只需单击“x”按钮),我想将它连接到另一个事件(例如,更改按钮的颜色)。怎么做?

谢谢。

qt qml qtquick2 qtquickcontrols2

2
推荐指数
1
解决办法
4357
查看次数

如何在QML项目中正确添加图片路径

我将练习这个例子,为此我在Windows 7 机器上使用 Qt Creator 4.3.0创建了一个名为Main2Qt Quick Console 2 应用程序项目。

main.qml的代码如下所示: 像这样我在应用程序输出窗口中收到以下错误:

程序意外结束。
C:\Users\Abbasi\Documents\QML\Main2\Main2\build-Main2-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\Main2.exe 崩溃。
启动 C:\Users\Abbasi\Documents\QML\Main2\Main2\build-Main2-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\Main2.exe ...
QML 调试已启用。仅在安全的环境中使用它。

请问路径有什么问题吗?

图像位于桌面上名为图像的文件夹中。如何将它们移动到项目下的文件夹中,请一步一步地说明?

qt qml qt-quick qtquickcontrols2

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

Qt/Qml Quick Control 2:无数字格式的SpinBox值

我想在 Qml Quick Controls 2 中显示数字SpinBox而不使用数字格式:

SpinBox {
    inputMethodHints: Qt.ImhDigitsOnly
    from: 1000
    to: 10000
}
Run Code Online (Sandbox Code Playgroud)

我尝试设置不同的区域设置,但每次数字都显示为“1.000”或“1,000”(正确的是“1000”)。有没有办法强制未格式化的输出?

qt qml qtquick2 qtquickcontrols2

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

QT QMatrix4x4矩阵,用于缩放和旋转原点x和y

我正在进行图像变换,我想从x原点和y原点同时缩放和旋转图像.我尝试使用单独的Scale,Rotate但它们同时工作一个.这是我的代码

function setRotation(rotation){
    rt.origin.x=imagQuickitem.anchorPoint.x;
    rt.origin.y=imagQuickitem.anchorPoint.y;
    rt.angle=rotation
    image.transform=rt;
    image.transform=sc;
}

function setScale(scale){
    sc.origin.x=imagQuickitem.anchorPoint.x;
    sc.origin.y=imagQuickitem.anchorPoint.y;
    sc.xScale=scale;
    sc.yScale=scale;
    image.transform=sc;
}

Scale { id:sc; }
Rotation { id:rt; }
Run Code Online (Sandbox Code Playgroud)

好吧,似乎解决方案是QMatrix4x4,我试图使用QMatrix4x4并发现这个链接 Qt变换矩阵, 但我不知道如何编写矩阵以适用于比例和旋转,我应该多个矩阵与旋转矩阵?

qt rotation matrix qml

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

在 Jackson 中以编程方式设置类型鉴别器

对于多态反序列化,Jackson 的 ObjectMapper 想要知道:

  1. 需要考虑哪些亚型
  2. 如何决定使用哪种子类型

有一些标准方法,使用完全限定的类名和某些保留的 JSON 属性,因此 Jackson 可以推断这些内容而无需进一步配置。

另一种常见的方法是,通过添加注释@JsonTypeInfo@JsonSubtypes到基本类型来为 Jackson 提供必要的信息。然而,这意味着,当添加新的子类型时,必须修改声明基类的文件。

还可以在运行时通过 .NET 以编程方式将子类型注册到 ObjectMapper objectMapper.registerSubtypes(...)

现在,我正在寻找一种在运行时以编程方式提供来自 @JsonTypeInfo 的信息而不使用该注释的方法。

这样objectMapper.addTypeInfo(new TypeInfo(BaseType.class, PROPERTY, "myPropertyName", NAME);我就可以对另一个项目中声明的类型使用多态反序列化,而该项目对 Jackson 或其任何注释一无所知。

java jackson jackson-databind

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