centralWidget中显示多个widget的实现与细节

一、在QMainWindow的对象中显示多个widget。

   大家都知道用setCentralWidget的方法,在QMainWindow的对象中放入widget。例如在视图模式中setCentralWidget(view);view->setScene(scene);scene->addItem(item);要显示多个widget,可用一下方法:   

   QSplitter *splitter= newQSplitter;

    splitter->addWidget(graphicsView);
    splitter->addWidget(tableView);
    this->setCentralWidget(splitter);
两个widget所占的比例等可用splitter的一些方法调节,这里就不细说。
二、如何禁止QSplitter的拖动(移动)
    按照1中方法显示多窗口后,splitter是可以拖动的,各窗口所占比例也会随着拖动变化。这是因为splitter有个handle,它是有自身的鼠标事件的。如果用splitter->setEnbled(false);方法,将导致里面所有的widget都不能接受鼠标事件,那如何保留widget的鼠标事件,又禁止splitter的拖动呢?我有一下方法:
    for(int i = 0; i<splitter->count();i++)
    {
     QSplitterHandle *handl = splitter->handle(i);
     handl->setEnabled(false);
    }
这样只将handle的鼠标事件禁止,就只禁止了splitter的拖动。

你可能感兴趣的:(centralWidget中显示多个widget的实现与细节)