QDockWidget设置初始大小的一个解决方案

来源:互联网 发布:linux var目录满了 编辑:程序博客网 时间:2024/05/17 06:59

QDockWidget仅仅作为其子控件的一个包装,因此对其使用resize()或者setGeometry()均不管用,这造成QDockWidget的初始大小常常不尽如人意。
网上有前辈提出通过调用QDockWidget的setMaximumSize()和setFixedSize()来实现初始大小的定制,但却限制了QDockWidget的最大尺寸,无法通过鼠标拖动来改变大小,因而显得较为麻烦和局限。
kenby在他的博文设置QDockWidget的初始大小中给出了一个解决方案,受他的文章启发,可设计一个QWidget的继承类,在QtDesigner中通过提升来使用。
继承类SizeDockWidget:

class SizeDockWidget : public QWidget{   Q_OBJECTpublic:   explicit SizeDockWidget(QWidget * parent = 0, Qt::WindowFlags f = 0)      : QWidget(parent,f) {      m_szHint = geometry().size();   }   void updateSizeHint(QSize & szHint2Set) {      m_szHint = szHint2Set;      updateGeometry();   }   virtual QSize sizeHint() const {      return m_szHint;   }protected:   QSize m_szHint;};

上面的类可以通过调用updateSizeHint来改变控件sizeHint函数的返回值。
使用方法:在QtDesigner中,将SizeDockWidget添加入提升的类中,然后在UI设计器中选中QDockWidget控件的子控件(在右边的对象浏览器中可见该子控件的类型是QWidget),点鼠标右键,选择“提升”为SizeDockWidget类,然后便可以在代码中随意设置对应QDockWidget的初始大小了。

0 0
原创粉丝点击