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

来源:互联网 发布:锵锵三人行9月11 知乎 编辑:程序博客网 时间:2024/04/28 01:53

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

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

    QSplitter *splitter= new QSplitter;

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的拖动。
0 0