【问题标题】:Qt/C++ Not displaying QGraphicview as QWidgetQt/C++ 不将 QGraphicview 显示为 QWidget
【发布时间】:2012-08-16 19:32:07
【问题描述】:

我的项目由笛卡尔平面上的几何图形之间的运算组成。我将包括一个必须在每次运算后更新的图形。

来源:

http://pastebin.com/s5Fu9dHJ

我创建了包装器“disegna”(:public QWidget),因为我发送以将所有内容显示为单独的小部件(我有一个用于虚拟键盘的小部件,另一个用于 Qlineedits 等)并且我需要一个 QWidget对象可以与 view-> addWidget (QWidget,int,int) 一起使用,因为我不能直接传递 QMainWindow 对象。

程序运行没有错误,但没有绘制“hello world”(并且没有为 istance QGraphicView 创建空白)。

我哪里做错了?

【问题讨论】:

    标签: c++ qt draw qgraphicsview qwidget


    【解决方案1】:

    改变

    QGraphicsView view(&scene);
    view.show();
    

    QGraphicsView * view = new QGraphicsView(&scene);
    view->show();
    

    您现在拥有它的方式,QGraphicView 的实例在堆栈上分配并在 disegna 构造函数执行后立即被销毁,这就是您看不到它的原因。

    别忘了释放内存。

    【讨论】:

    • 谢谢,我太累了,忘记了。它运行正常,但有 2 个窗口(一个和以前一样,一个带有 QGraphicview istance 的新窗口)。我怎样才能将这个包含为主布局上的 QWidget?
    • 解决了!这是将我的 QGraphicView 显示到 QMainWindow disegna::disegna(QWidget parent) 的最终来源: QWidget(parent) { scene.addText("19 11"); QGraphicsRectItem myrect = scene.addRect(QRectF(0,0,50,50),QPen(), QBrush()); scene.setForegroundBrush(QBrush(Qt::blue, Qt::CrossPattern)); scene.addRect(QRectF(0, 0, 700, 300)); QGraphicsView * view = new QGraphicsView(&scene,this);视图->显示(); } 再次感谢你 现在我可以睡觉了(学习 12 小时!)
    猜你喜欢
    • 2022-07-19
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多