二楼错误的,给你看眼我的源码,这种方式最好了。上下层可以是任何对象。
void MainWindow::InitGraphicLayer()
{
// 实例化 GraphicsView 和 Scene
m_GraphicsView = new QGraphicsView(this);
m_Scene = new QGraphicsScene(this);
setCentralWidget(m_GraphicsView); // 将 QGraphicsView 设为 centralWidget
// 实例化 Map 和 Dashboard
m_Map = new Map(this);
m_Dashboard = new Dashboard(this);
m_Dashboard->setAttribute(Qt::WA_TranslucentBackground); // 设置透明背景
// 将 Dashboard 设置为焦点接收对象
m_Dashboard->setFocus();
// 将 Map 和 Dashboard 加入 QGraphicsScene
m_Scene->addWidget(m_Map)->setZValue(0); // Map 在底层
m_Scene->addWidget(m_Dashboard)->setZValue(1); // Dashboard 在上层
}