贴上代码,提拱了三种dock停靠方式。我在代码中添加了注释。
请查看下面的代码。
dockwindow.h:
#ifndef DOCKWINDOWS_H
#define DOCKWINDOWS_H
#include <QtGui>
class DockWindows : public QMainWindow
{
Q_OBJECT
public:
DockWindows();
~DockWindows();
};
#endif
#include "dockwindows.h"
DockWindows::DockWindows()
: QMainWindow()
{
setWindowTitle( tr( "DockWindows" ) );
QTextEdit *te = new QTextEdit( this );
te->setText(tr("Main Window"));
te->setAlignment(Qt::AlignCenter);
setCentralWidget( te );
// 停靠窗口 1
QDockWidget *dock = new QDockWidget(tr("DockWindow 1"), this );
dock->setFeatures( QDockWidget::DockWidgetMovable ); //可移动的特征
dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); //允许移动的区域
QTextEdit *te1 = new QTextEdit();
te1->setText(tr("Window 1"));
dock->setWidget( te1 );
addDockWidget( Qt::RightDockWidgetArea, dock ); //添加
// 停靠窗口 2
dock = new QDockWidget( tr("DockWindow 2"), this );
dock->setFeatures( QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetClosable); //可关闭,可浮动的特征
QTextEdit *te2 = new QTextEdit();
te2->setText(tr("Window 2"));
dock->setWidget( te2 );
addDockWidget( Qt::RightDockWidgetArea, dock);
// 停靠窗口 3
dock = new QDockWidget( tr("DockWindow 3"),this );
dock->setFeatures( QDockWidget::AllDockWidgetFeatures ); //所有QDockWidget的特征。
QTextEdit *te3 = new QTextEdit();
te3->setText(tr("Window 3"));
dock->setWidget( te3 );
addDockWidget( Qt::BottomDockWidgetArea, dock);
}
DockWindows::~DockWindows()
{
}
#include "dockwindows.h"
#include <QApplication>
int main( int argc, char **argv )
{
QFont font("ZYSong18030",12);
QApplication::setFont(font);
QApplication a( argc, argv );
QTranslator translator(0);
translator.load("dockwindows_zh",".");
a.installTranslator(&translator);
DockWindows *dockwindows = new DockWindows();
dockwindows->show();
return a.exec();
}