【问题标题】:QGraphicsObject doesn't display QPixmapQGraphicsObject 不显示 QPixmap
【发布时间】:2013-08-31 11:28:31
【问题描述】:

我正在win7上开发一个非常简单的应用程序并在win8上运行。 当我在 win7 上运行时,它显示了我的QGraphicsObject 子类绘制的像素图。但是,当我将 exe 和 dll 复制到我的平板电脑时,它不会显示像素图,但其他一切都是一样的。

另一个问题是当我退出应用程序时,它说意外关闭。

这里是相关部分

myImage::myImage(QGraphicsObject *parent) :
QGraphicsObject(parent)
{
    pxm = new QPixmap("://images/flower.jpg");
    setScale(0.5);
}

QRectF myImage::boundingRect() const
{
    QRectF rect(0,0,pxm->width(),pxm->height());
    return rect;
}

void myImage::paint( QPainter* painter,
                     const QStyleOptionGraphicsItem* /*option*/,
                     QWidget* /*widget*/ )
{
    painter->drawPixmap( 0, 0, pxm->width(), pxm->height(), *pxm );
}

这里是主要功能

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QGraphicsScene scene;

    myImage img;
    scene.addItem(&img);

    QGraphicsView view(&scene);

    QWidget window;
    window.setFixedHeight(400);
    window.setFixedWidth(500);
    window.setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);

    QPushButton button("Quit");
    QObject::connect(&button,SIGNAL(clicked()),&app,SLOT(quit()));

    QVBoxLayout layout;
    layout.addWidget(&view);
    layout.addWidget(&button);

    window.setLayout(&layout);
    window.show();

    return app.exec();
}

【问题讨论】:

    标签: c++ qt qgraphicsitem


    【解决方案1】:

    这里的问题是您使用的是 jpeg 图像,它不是 Qt 原生的。在 Qt 的安装中,您会找到一个 plugins 文件夹,其中包含一个名为“imageformats”的文件夹。如果您将库文件夹复制到可执行文件的路径(假设是 Windows),那么这应该可以工作。类似的讨论是here

    或者,使用与 jpeg 不同的图像格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多