【发布时间】:2015-03-11 13:58:35
【问题描述】:
我希望创建一个在背景中具有基本图像的视图,并在顶部创建可拖动的小部件。
我的设置是这样的:
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent) {
ui->graphicsView->setScene(new QGraphicsScene(nullptr));
ui->graphicsView->scene()->addWidget(new BackgroundWidget(nullptr));
}
这很好用。也一样:
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent) {
ui->graphicsView->setScene(new QGraphicsScene(nullptr));
BackgroundWidget * bgWidget = new BackgroundWidget(nullptr);
new ForegroundWidget(bgWidget);
ui->graphicsView->scene()->addWidget(bgWidget);
}
但是,我想动态添加前台小部件,但它不起作用。我注意到以下内容根本没有添加前台小部件:
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent) {
ui->graphicsView->setScene(new QGraphicsScene(nullptr));
BackgroundWidget * bgWidget = new BackgroundWidget(nullptr);
ui->graphicsView->scene()->addWidget(bgWidget);
new ForegroundWidget(bgWidget);
}
这添加了前景小部件,但不允许与背景半透明(项目需要):
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent) {
ui->graphicsView->setScene(new QGraphicsScene(nullptr));
BackgroundWidget * bgWidget = new BackgroundWidget(nullptr);
ui->graphicsView->scene()->addWidget(bgWidget);
ui->graphicsView->scene()->addWidget(new ForegroundWidget(nullptr));
}
关于为什么在添加背景小部件后添加子小部件不起作用的任何想法?如果是这样,有什么想法可以解决吗?
谢谢。
编辑:更正了代码块中的一些愚蠢的打字错误。
图片是问题的缩小版;小部件都设置为半透明(255 个中的 100 个 alpha),但一个小部件似乎高于另一个。如果我以任何方式添加“前景”小部件,我就会得到这个。以下是我期望得到的:
正如我所说,如果我在附加到场景之前添加它们,它可以正常工作,但我需要能够在运行时添加到场景中。
【问题讨论】:
标签: c++ qt qgraphicsview