C++/QT按比例调整Qdockwidget的初始大小:使用resizedocks函数

在Qt5.6及更高版本中,QDockWidget的初始大小可以通过QMainWindow的resizeDocks函数进行有效设置。例如,可以通过指定一组QDockWidget和对应像素大小的列表,实现按比例分配的水平排列。该方法提供了更灵活的窗口布局控制,避免了固定大小的限制。代码示例展示了如何调整三个QDockWidget的大小以适应窗口的1:6:3比例。
摘要由CSDN通过智能技术生成

Qdockwidget的初始大小总是不尽如人意。

网上常见的方法:

  1. 直接通过geometry或者setGeometry设置,根本没有用
  2. resize方法,也没有用。
  3. 调用QDockWidget的setMaximumSize()和setFixedSize()函数来实现初始大小的定制,但是这相当于卡死了窗口的大小范围,非常难受
  4. 各种曲线救国策略,基本都是继承QWidget基类新建一个类,在新建类中更新自己的geometry,或者动态调节MaximumSize。如 这个这个,或者 这个

Qt5.6之后

在Qt5.6之后,这个问题得到了解决,使用QMainWindow::resizeDocks函数即可实现Qdockwidget大小的初始化。
假设你有三个同级的Qdockwidget分别叫dock1,dock2,dock3,你希望它们在主窗体中按1:6:3的比例水平排列,只需要:

void QMainWindow::initDockSize(){
    QList<QDockWidget*> temp_docklist;
        temp_docklist << dock1;
        temp_docklist << dock2;
        temp_docklist << dock3;
    QList<int> temp_sizelist;
        temp_sizelist<< static_cast<int>(this->geometry().width() * 0.1);
        temp_sizelist<< static_cast<int>(this->geometry().width() * 0.6);
        temp_sizelist<< static_cast<int>(this->geometry().width() * 0.3);
    this->resizeDocks(temp_docklist, temp_sizelist, Qt::Horizontal);
}
temp_docklist:要调整的一组QDockWidget
temp_sizelist:要调整到的一组像素值
Qt::Horizontal:横向调整,也可使用Qt:Vertical进行纵向调整。默认为纵向。

resizeDocks这个函数能帮你将temp_docklist中“一系列QDockWidget”的大小,按照Qt::Horizontal(即横向)的方向,分别调整为temp_sizelist中对应的值,以像素为单位。

this->geometry().width() * 0.1是获取当前窗口宽度的值的10%,然后使用static_cast将其转化为整形。你也可以改成其他的任意数值。

具体可以查阅官方文档

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值