小编PH-*_*ero的帖子

Qt:QWidget::paintEngine:不应再被调用

我正在尝试制作一个应用程序,您可以在其中用手指在画布上绘画。
为了实现这一点,我将QWidgetas子类化MFCanvas,在 QML 中使用 注册类
qmlRegisterType<>(),实现虚paintEvent();函数,并在函数内部
绘制它。 问题: 在构建时,抛出此警告:QPainterpaintEvent();


QPainter

QWidget::paintEngine: 不应再被调用

然后,抛出几个其他相关警告:

QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active
Run Code Online (Sandbox Code Playgroud)

难怪:QPainter什么都没画……
还有,我应该自己打电话paintEvent();吗?
还是应该每帧都调用它QWidget,而我却以某种方式把它搞砸了?

我在网上搜索,但我发现的所有帖子都没有答案,或者他们
使用的不是QWidget.

我的代码:

mfcanvas.cpp:

#include "mfcanvas.h"
#include <QDebug>
#include <QPainter>
#include <QVector2D>
#include <QList>

MFCanvas::MFCanvas(QWidget *parent) : QWidget(parent)
{
    paths = new QList<QList<QVector2D>*>();
    current = NULL;
    QWidget::resize(100, 100);
}

MFCanvas::~MFCanvas()
{
    delete paths;
} …
Run Code Online (Sandbox Code Playgroud)

c++ qt qpainter

7
推荐指数
2
解决办法
3万
查看次数

Qt:在Android和iOS上设置app-icon

我正在开发一个应该在
Windows,MacOSX,Android和iOS 上运行的应用程序.

我发现了如何在Windows和Mac上设置图标,但它如何在Android和iOS上运行?

谢谢阅读!

编辑:我不使用Nessecitas SDK.我的项目文件夹中没有AndroidManifest.xml.但是,我的项目文件夹中有一个名为"build-myProjectName-Android_f_r_armeabi_GCC_4_8_Qt_5_3_1-Release"的文件夹,其中包含一个文件夹"android-build",其中包含一个清单.

icons qt android qt-creator ios

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

Java:为什么不声明传递引用的静态intead?

假设我们想制作一个你必须收集宝石的游戏.所以我们需要一个Gem类,一个GemSpawner类,当然还有MainActivity类.

public class MainActivity {
    public static void main(String[] args) {

        List<Gem> gems = new ArrayList<Gem>();

        GemSpawner gs = new GemSpawner(gems);

        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们使用gems创建了一个List,并通过它的构造函数将其传递给GemSpawner,因此gs可以使用以下命令将gems添加到列表中:

gems.add(new Gem(10, 50, "red")); //should represent Xpos, Ypos, and color.
Run Code Online (Sandbox Code Playgroud)

但这不会更好:

public class MainActivity {

    public static List<Gem> gems = new ArrayList<Gem>();

    public static void main(String[] args) {

        GemSpawner gs = new GemSpawner();

        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,GemSpawner(gs)可以使用以下命令添加宝石:

MainActivity.gems.add(new Gem(10, 50, "red"));
Run Code Online (Sandbox Code Playgroud)

朋友只向我展示并解释了上述方法,但下面的方法不是更有效吗?

java parameters static constructor

3
推荐指数
2
解决办法
197
查看次数

QML:在ListView中调用的ListElement中定义函数

在QML ListView中,我想在单击MouseArea时调用函数:

ListView{
    anchors.fill: parent
    orientation: ListView.Horizontal

    model: myModel

    delegate:
    Rectangle {
        anchors.fill: parent
        Text {
            anchors.centerin: parent
            text: label
        }
        MouseArea {
            width: 30
            height: parent.height
            onClicked: {
                doSomething()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该是一个溢出菜单.在ListModel(myModel)中,我希望能够说出调用doSomething()时会发生什么.我怎么做?也许是这样的?

ListModel {
    id: myModel

    ListElement {
        label: "New"
        doSomething: {
            canvas.clear()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道.我在网上搜索,但我找不到任何东西.
我正在使用ListView/Model,因为我想动态添加和删除菜单项.
感谢您的关注!=)

listview function qml

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

Java:是否可以将Class <?>对象与泛型类型参数进行比较?

假设我有一个类列表:

List<Class<?>> classes;
Run Code Online (Sandbox Code Playgroud)

如果我现在采用其中一个类,让我们说...第二个,并且想知道它是否代表String类,我会做以下事情:

classes.get(1).equals(String.class)
Run Code Online (Sandbox Code Playgroud)

但我怎么知道它是否代表一种通用类型......说T?

class Foo<T> {

    void someMethod(){

        System.out.println(classes.get(1).equals(T)); //error: T cannot be resolved to a variable
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过了

T.class
(Class<T>)T
Run Code Online (Sandbox Code Playgroud)

但没有任何作用.我真的想知道这是否可能,如果可能的话,如何实现它.
感谢您的关注!=)

java generics

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

标签 统计

java ×2

qt ×2

android ×1

c++ ×1

constructor ×1

function ×1

generics ×1

icons ×1

ios ×1

listview ×1

parameters ×1

qml ×1

qpainter ×1

qt-creator ×1

static ×1