2017-05-23 13 views
0

私はC++のPyQt5からQt5への移行中ですが、ちょっと苦労しています。 logoと呼ばれるQwidgetを含む単純なUIを作成しました。私がこのコードでウィジェットをレンダリングするSVGウィジェット作成しようとしている:PythonでUIからのQt5ウィジェットのプロパティ

QSvgRenderer renderer(QString(":/LogoSVG.svg")); 

QImage image(500, 200, QImage::Format_ARGB32); 
image.fill(0x000000); 

QPainter painter(&image); 
renderer.render(&painter); 

、私はUIのフォームローダークラスで、その後SVGをレンダリングするシンプルなウィジェットクラスを作成したい私は

にしてください
self.logo = SVGRender(self) 

私はC++のQtで同じことをやろうとしているので、ここで私がこれまで持っているものだと、それは誤りerror: cannot convert ‘logoW’ to ‘QWidget*’ in assignment

example.h

#ifndef EXAMPLE_H 
#define EXAMPLE_H 

#include "ui_example.h" 

class example : public QWidget 
{ 
    Q_OBJECT 

public: 
    example(QWidget *parent = 0); 

private: 
    Ui::example ui; 

}; 

class logoW: public QWidget 
{ 
    Q_OBJECT 

public: 
    logoW(QWidget *parent = 0); 
}; 

#endif 
を返しています

example.cpp

#include <QtGui> 
#include <QScreen> 
#include <QApplication> 
#include <QDesktopWidget> 
#include <QCoreApplication> 
#include <QSvgRenderer> 
#include <QPainter> 
#include <QImage> 
#include <iostream> 
#include "example.h" 

using namespace std; 


example::example(QWidget *parent) 
    : QWidget(parent) 
{ 

    ui.setupUi(this); 

    ui.logo = logoW(this) 

} 


logoW :: logoW(QWidget * parent = 0){ 

    QSvgRenderer renderer(QString(":resources/LogoSvg.svg")); 

    QImage image(500, 200, QImage::Format_ARGB32); 
    image.fill(0xaaA08080); 

    QPainter painter(&image); 

    renderer.render(&painter); 

} 

誰かが私が間違ってやっている私を見ることができますか?

ui.logo = logoW(this); 

に:私もあなたに画像を表示することを理解し

ui.logo = new logoW(this); 

答えて

1

変数ui.logoは、あなたの場合にはそれが変化し、オブジェクトのポインタを必要としますロゴウィジェット。これを行うには、paintEventメソッドを実装する必要があります。

* .hの

class logoW: public QWidget 
{ 
    Q_OBJECT 

public: 
    logoW(QWidget *parent = 0); 

protected: 
    void paintEvent(QPaintEvent *event); 
}; 

* .cppファイル

logoW::logoW(QWidget *parent):QWidget(parent) 
{ 
} 

void logoW::paintEvent(QPaintEvent *event){ 
    Q_UNUSED(event) 
    QSvgRenderer renderer(QString(":resources/LogoSvg.svg")); 

    QPainter painter(this); 

    renderer.render(&painter); 
} 
+0

Welp、new'は、それがコンパイルさせ、あなたの編集 '追加それを機能させた。助けてくれてありがとう、今私は間違ったことを知っている。 – aseylys

関連する問題