下面是我通过按下按钮将位图文件添加到场景的代码。我可以通过scene-> addEllipse添加一个椭圆,但是我不能通过scene-> addItem添加/显示Menu1.bmp。如您所见,它们中的任何一个都具有相同的功能。同样在运行模式下,当我按下按钮时,我得到"项目已经被添加到这个场景"警告。为什么我看不到该项目是否已添加,有什么帮助吗?
.h文件
#include <QWidget>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QPushButton>
#include <QGraphicsItem>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void changeMenu();
private:
Ui::Widget *ui;
QGraphicsScene *scene;
QGraphicsView *view;
QPushButton *menu;
QGraphicsPixmapItem *newItem;
};
.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QLayout>
#include <QPixmap>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
scene = new QGraphicsScene(0, 0, 100, 100);
view->setScene(scene);
newItem=new QGraphicsPixmapItem(QPixmap(":/images/Menu1.bmp"));
QHBoxLayout *labelLayout = new QHBoxLayout;
menu = new QPushButton;
menu->setText(tr("Menu"));
labelLayout->addWidget(view);
labelLayout->addWidget(menu);
connect(menu, SIGNAL(clicked()), this, SLOT(changeMenu()));
setLayout(labelLayout);
}
void Widget::changeMenu()
{
if(!QPixmap(":/images/Menu1.bmp").isNull())
scene->addEllipse(-10,-10,10,10);
else
scene->addEllipse(10,-100,10,100);
scene->addItem(newItem);
}
main.cpp文件
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}