Недостаточно контекста, поэтому я не могу точно сказать, что происходит.Но если они есть в функции, то вы объявляете локальные переменные, которые исчезают после выхода из функции.Если вы находитесь в основном, ваш код должен выглядеть примерно так, но он, вероятно, вылетит:
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QWidget widget;
view.setBackgroundBrush(Qt::red);
QVBoxLayout vlayout;
widget.setLayout(&vlayout);
vlayout.addWidget(&view);
vlayout.addWidget(new QPushButton("some button here"));
widget.show();
Я рекомендую динамически размещать объекты:
int main(int argc, char* argv[]){
QApplication app(argc, argv);
QGraphicsScene* scene = new QGraphicsScene;
QGraphicsView* view = new QGraphicsView(scene);
QWidget *widget = new QWidget;
view->setBackgroundBrush(Qt::red);
QVBoxLayout* vlayout = new QVBoxLayout(widget);
vlayout->addWidget(view);
vlayout->addWidget(new QPushButton("some button here"));
widget->show();
return app.exec();
}
Незабудьте удалить родительский объект, чтобы он не пропускал память.