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

一、在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的拖动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值