我是使用 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
主窗口.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();
}
最佳答案
您发布的代码的问题是创建了两个不同的 QGraphicsView 对象 - 一个是 Screen 对象(scr),它是 QGraphicsView 的子类,因此是 QGraphicsView 对象,另一个是 ( view)您在 Screen 构造函数中用“new”分配的对象。
您正在设置第二个场景的场景属性,但从未显示它或对其执行任何操作。您将看到屏幕上显示的第一个(因为这是您在 main() 内部调用 show() 的那个),但由于您从未设置其场景属性,因此它保持空白/白色。
最简单的修复方法是删除不必要的第二个 QGraphicsView 对象。我将场景构造函数更改为:
Screen::Screen()
{
QGraphicsScene *scene = new QGraphicsScene();
scene->setBackgroundBrush(Qt::red);
setScene(scene);
}
...完成此操作后,程序现在会显示您所期望的红色窗口。
关于c++ - 从 Qt 开始 - QGraphicsView 和 QGraphicsScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20588914/