QDockwidget的用法及经验

在pyqt4 中 dock 是一个镶嵌在主窗口 而又能拉出来成立一个独立窗口的控件 ,dock 是QDockWidget 的对象

dock=QDockWidget('title',self) #实例化一个dock title 为标题 self 为parent 因为QDockWidget 不添加到布局管理器中 所以我们需要传一个parent 给他

dock.setObjectName("dock") #设置dock的对象名称

dock.setAllowedAreas(Qt.LeftDockWidgetArea |Qt.RightDockWidgetArea) #设置dock只能在左边 或者右边显示

allowedareas 有Qt.LeftDockWidgetArea Qt.RightDockWidgetArea Qt.TopDockWidgetArea Qt.BottomDockWidgetArea Qt.AllDockWidgetAreas

dock.setWidget(QLabel) #添加一个label控件

dock.setFeatures(QDockWidget.NoDockWidgetFeatures) #设置dock是否可以关闭 拉出等

参数还有 QDockWidget.DockWidgetClosable 可以关闭 DockWidgetMovable 可以移动

DockWidgetFloatable #可以独立出来 DockWidgetVerticalTitleBar 垂直显示标题 AllDockWidgetFeatures 除垂直标题以外 以上所有 NoDockWidgetFeatures

self.addDockWidget(Qt.RightDockWidget,dock) 添加dock到主窗口 第一个参数为显示位置

 

而有关QDockWidget的初始大小的问题,我花了一早上的时间才解决的:

通过设置QDockWidget子类QWidget的sizeHint()返回值。

  1. #include    
  2.   
  3. class MyWidget : public QWidget   
  4. {   
  5. public:   
  6.     QSize sizeHint() const  
  7.     {   
  8.         return QSize(270, 900); /* 在这里定义dock的初始大小 */  
  9.     }   
  10. };   
  11.   
  12. int main(int argc, char **argv)   
  13. {   
  14.     QApplication app(argc, argv);   
  15.     QMainWindow box;   
  16.     QDockWidget *dock = new QDockWidget(&box);   
  17.     MyWidget *wi = new MyWidget;   
  18.     dock->setWidget(wi);   
  19.     box.addDockWidget(Qt::TopDockWidgetArea, dock );   
  20.     box.show();   
  21.     return app.exec();       
  22. }  

 

你可能感兴趣的:(开发技术)