当前位置:编程学习 > wap >>

[请教]如何在QMainWindow里显示QGraphicsView对象

  我知道可以在QMainWindow里边显示一些按钮或者其他功能,但是我在试图在一个QMainWindow里显示一个QGraphicsView子类的对象,一直没成功。大牛们可以告诉我一下应该是怎样的一种嵌套结构么?比如说是用哪些函数把对象添加到QMainWindow的对象里的。
  再问一个另外的问题,在QGraphicsView对象里边显示的好几个QGraphicsItem,想要增加额外的功能,让QGraphicsItem之间有指定的连线功能,应该怎么做呢。。。

  原谅菜鸟的无知吧 --------------------编程问答-------------------- QGraphicsView就是一个QWidget
怎么放QWidget就怎么放QGraphicsView --------------------编程问答--------------------
引用 1 楼 Inhibitory 的回复:
QGraphicsView就是一个QWidget
怎么放QWidget就怎么放QGraphicsView


你的意思我明白了,可是我的操作中还是有一点问题。

是这样的。  我在一个Qt的例子中,

例子中是在MdiArea中通过点击会在MdiArea中添加一个文本编辑框。
槽对应的按钮内容是:
void MainWindow::on_action_New_triggered()
{
    // 新建文本编辑器部件
    QTextEdit *edit = new QTextEdit(this);

    // 使用QMdiArea类的addSubWindow()函数创建子窗口,以文本编辑器为中心部件
    QMdiSubWindow *child = ui->mdiArea->addSubWindow(edit);

    child->setWindowTitle(tr("多文档编辑器子窗口"));

    // 显示子窗口
    child->show();
}


现在我打算在里边显示一个很简单的图形,就会打算把槽中的代码换掉
void MainWindow::on_action_New_triggered()
{
    QGraphicsScene scene;
    scene.setSceneRect(-200, -150, 400, 300);
    MyItem *item = new MyItem;
    item->setColor(QColor(189, 2, 26));
    item->setPos(i * 50 - 90, -50);
    scene.addItem(item);
    MyView view;
    view.setScene(&scene);
    //view.show();


    QMdiSubWindow *child = ui->mdiArea->addSubWindow(view);

    child->setWindowTitle(tr("多文档编辑器子窗口"));

    // 显示子窗口
    child->show();
}

其中MyItem和MyView是自定义类,其中MyItem是QGraphicsItem的子类,MyView是QGraphicsView的子类


按照我的想法,只是想把槽中对应的操作改为下面的,但是在编译时会报一个错
no matching function for call to'QMdiArea::addSubWindow(MyView&)' 

QMdiSubWindow *child = ui->mdiArea->addSubWindow(view);

这一行,不知道我啰啰嗦嗦的是否把问题描述清楚了呢 --------------------编程问答-------------------- 参数类型是否错了? addsubwindow 参数是一个指针~
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,