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()返回值。
- #include <QtGui>
- class MyWidget : public QWidget
- {
- public:
- QSize sizeHint() const
- {
- return QSize(270, 900); /* 在这里定义dock的初始大小 */
- }
- };
- int main(int argc, char **argv)
- {
- QApplication app(argc, argv);
- QMainWindow box;
- QDockWidget *dock = new QDockWidget(&box);
- MyWidget *wi = new MyWidget;
- dock->setWidget(wi);
- box.addDockWidget(Qt::TopDockWidgetArea, dock );
- box.show();
- return app.exec();
- }