首页 > 解决方案 > 为什么将小部件设置为中心时不显示场景

问题描述

我在显示两个标签时遇到问题,标签“label”显示没有问题(它有一些按钮水平调整),第二个标签“label1”没有显示(它包含一个有视图的场景,在场景中我有标题和图片)。这是我尝试使用的代码。

widget1 = new QWidget;
setCentralWidget(widget1);

label1 = new QLabel(widget1);
scene = new QGraphicsScene(label1);
vue = new QGraphicsView(scene);
label1->move(100,100);

label = new QLabel(widget1);
layout = new QHBoxLayout(label);
label->resize(500,100);

这是我第一次使用 QGraphicsScene/View,这让我有点困惑。

感谢您的回答

标签: c++qtqt5

解决方案


您肯定没有以正确的方式使用所有这些小部件。您不需要标签来显示 QGraphcisView,QGraphicsScene 也不需要成为标签的子项。

如果你想在中心小部件中显示一个标签和一个视图,你可以这样写:

//==== Central widget part
QWidget* widget = new QWidget(this);

setCentralWidget(widget);

//==== Graphics part
QGraphicsScene* scene = new QGraphcisScene(this);
QGraphicsView* view = new QGraphicsView(widget);

view->setScene(scene);

//==== Label part
QLabel* label = new QLabel(widget);

//==== Layout part
QHBoxLayout* layout = new QHBoxLayout(widget);

layout.addWidget(label);
layout.addWidget(view);

widget.setLatout(layout);

这应该在行中显示一个标签和一个图形视图。

如果您允许我提供一条建议:在尝试使用 QGraphics 模块之前,您应该了解育儿系统。这是 Qt 的基石之一,你在这里做错了什么。从这里开始育儿系统:https ://doc.qt.io/qt-5/objecttrees.html

和这里的图形:https ://doc.qt.io/qt-5/graphicsview.html

希望对您有所帮助。


推荐阅读