2013-12-14 1 views
2

저는 Qt를 사용하는 초보자이며 문제가 있습니다. QGraphicsView 및 QGraphicsScene을 사용하여 빨간색 배경을 표시하고 싶습니다. 빨간색 대신에 나는 여전히 흰색을 표시하고 있습니다. 나는 문제가 어디에 있는지 모른다.Qt로 시작 - QGraphicsView 및 QGraphicsScene

MainWindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QGraphicsView> 
#include <QGraphicsScene> 
#include <QBrush> 

class Screen:public QGraphicsView 
{ 
Q_OBJECT 

public: 
    Screen(); 
}; 

#endif // MAINWINDOW_H 

MainWindow.cpp

#include "mainwindow.h" 

Screen::Screen() 
{ 

    QGraphicsView *view = new QGraphicsView(this); 
    QGraphicsScene *scene = new QGraphicsScene(); 
    QBrush redBrush(Qt::red); 

    scene->setBackgroundBrush(redBrush); 
    view->setScene(scene); 
} 

하여 Main.cpp

#include "mainwindow.h" 
#include <QApplication> 

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

    Screen scr; 
    scr.show(); 

    return a.exec(); 
} 

답변

2

당신이 게시 코드의 문제가되는 두 가지를 QGraphicsView 객체가 거기에있다 created - 하나는 QGraphicsView의 서브 클래스 인 Screen 객체 (scr)이고 거기에는 fore은 QGraphicsView 객체이고 다른 하나는 Screen 생성자에서 'new'로 할당 한 (view) 객체입니다.

두 번째 장면의 장면 속성을 설정했지만 표시하거나 아무것도하지 마십시오. main() 내부에서 show()라고 부르는 첫 화면이 화면에 표시되어 있지만 장면 속성을 설정하지 않았으므로 빈/흰색으로 표시됩니다.

가장 쉬운 방법은 불필요한 두 번째 QGraphicsView 개체를 제거하는 것입니다. 나는이에 장면 생성자 변경 :

Screen::Screen() 
{ 
    QGraphicsScene *scene = new QGraphicsScene(); 
    scene->setBackgroundBrush(Qt::red); 
    setScene(scene); 
} 

을 ... 그리고, 프로그램이 지금 당신이 기대 빨간색 창을 표시하는 것이 수행하는 데.