• 9336阅读
  • 6回复

关于QMainWindow中的setCentralWidget(),一闪就关闭了,在mainwindow中没有显示 [复制链接]

上一主题 下一主题
离线3314175
 

只看楼主 倒序阅读 楼主  发表于: 2009-03-27
创建了一个MainWindow类,从QMainWindow中继承,我用Qt  Assistant中的Colliding Mice Example做实验,
创建了一个类用来显示Colliding Mice

class Airport:public QWidget
{

public:
    Airport(QWidget *parent=0);
};

Airport::Airport(QWidget *parent/* =0 */):QWidget(parent)
{
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));

    QGraphicsScene scene;
    scene.setSceneRect(-300, -300, 600, 600);
    scene.setItemIndexMethod(QGraphicsScene::NoIndex);

    for (int i = 0; i < MouseCount; ++i) {
        Mouse *mouse = new Mouse;
        mouse->setPos(::sin((i * 6.28) / MouseCount) * 200,
            ::cos((i * 6.28) / MouseCount) * 200);
        scene.addItem(mouse);
    }


    QGraphicsView view(&scene);
    view.setRenderHint(QPainter::Antialiasing);
    view.setCacheMode(QGraphicsView::CacheBackground);
    view.setDragMode(QGraphicsView::ScrollHandDrag);
    view.resize(400, 300);
    view.show();
}

结果Colliding Mice 一闪就没了,就剩一个mainwindow的空壳,请高手指点,怎样才能在mainwindow中的CentralWidget显示Colliding Mice
离线3314175

只看该作者 1楼 发表于: 2009-03-27
创建了一个MainWindow类,从QMainWindow中继承,我用Qt  Assistant中的Colliding Mice Example做实验,
创建了一个类用来显示Colliding Mice

class Airport:public QWidget
{

public:
    Airport(QWidget *parent=0);
};

Airport::Airport(QWidget *parent/* =0 */):QWidget(parent)
{
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));

    QGraphicsScene scene;
    scene.setSceneRect(-300, -300, 600, 600);
    scene.setItemIndexMethod(QGraphicsScene::NoIndex);

    for (int i = 0; i < MouseCount; ++i) {
        Mouse *mouse = new Mouse;
        mouse->setPos(::sin((i * 6.28) / MouseCount) * 200,
            ::cos((i * 6.28) / MouseCount) * 200);
        scene.addItem(mouse);
    }


    QGraphicsView view(&scene);
    view.setRenderHint(QPainter::Antialiasing);
    view.setCacheMode(QGraphicsView::CacheBackground);
    view.setDragMode(QGraphicsView::ScrollHandDrag);
    view.resize(400, 300);
    view.show();
}


MainWindow::MainWindow()
{
    airport = new Airport;
    setCentralWidget(airport);

    createActions();
    createMenus();
    createToolBars();
    createStatusBar();
    createDockWindows();

    setWindowTitle(tr("AirPort Simulation"));

}

结果Colliding Mice 一闪就没了,就剩一个mainwindow的空壳,请高手指点,怎样才能在mainwindow中的CentralWidget显示Colliding Mice
离线3314175

只看该作者 2楼 发表于: 2009-03-27
自己顶一下
只看该作者 3楼 发表于: 2009-03-27
    QGraphicsScene scene;
是局部变量,出了构造函数就没了
离线3314175

只看该作者 4楼 发表于: 2009-03-27
谢谢,但是具体应该怎么解决呢?
离线3314175

只看该作者 5楼 发表于: 2009-03-27
顶上去
离线3314175

只看该作者 6楼 发表于: 2009-03-27
自己和同学研究了一晚上,明白了,先用private声明一个,再用一个layout把它加进去,ok
快速回复
限100 字节
 
上一个 下一个