gpt4 book ai didi

c++ - Qt 框架 : How to display a QGraphicsView in a layout?

转载 作者:太空狗 更新时间:2023-10-29 21:27:46 25 4
gpt4 key购买 nike

我无法让 QGraphicsView 显示在 QVBoxLayout 对象中,我不知道哪里出了问题。我的代码可以编译,因此不会抛出任何错误。这是我的简单代码。 (我是 Qt 和 C++ 新手)。在底部,我向布局添加了一个 QPushButton 小部件,它显示得很好。提前感谢您的帮助!

QGraphicsScene scene;
QGraphicsView view(&scene);
view.setBackgroundBrush(QImage(":/images/bg/tile.png"));
view.setCacheMode(QGraphicsView::CacheBackground);
QPixmap pixmap("images/icons/dsp.gif");
QGraphicsPixmapItem* dsp = scene.addPixmap(pixmap);
view.show();
vlayout->addWidget(&view);
vlayout->addWidget(new QPushButton("some button here"));

最佳答案

没有足够的上下文,所以我无法准确判断发生了什么。但是,如果它们在函数中,那么您声明的局部变量在函数退出后就消失了。如果你在 main 中,你的代码应该看起来像这样,但它可能会崩溃:

 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();
}

不要忘记删除父对象,这样它就不会泄漏内存。

关于c++ - Qt 框架 : How to display a QGraphicsView in a layout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com