亚瑟在线中文影院官方网站_农村女妓女野外bbw_国产无矿码直接进入_亚洲AV中文字字幕乱码软件久久国产亚洲AV无码麻软件_亚洲人成伊人成综合网小说

當(dāng)前位置:首頁 > 百科 > 正文
焦點速遞!Qt5布局管理(二)—QDockWidget停靠窗口類
來源:QT教程  時間:2023-04-04 09:14:08
字號:


(資料圖)

??看翱陬怮DockWidget

實例效果

如右圖所示,左半部分MainWindow是該窗口的中心窗口,右邊的最下面兩個??看翱诳梢蕴鲈摯翱冢?

但是第一個停靠窗口只能??吭谟疫吇蛘咦筮叄荒芴?。 同時各個窗口的大小可以調(diào)節(jié)。 另外,各個窗口可以合并:

重要代碼

1 #include \"dockwindows.h\" 2 #include 3 #include 4 DockWindows::DockWindows(QWidget *parent) 5     : QMainWindow(parent) 6 { 7     setWindowTitle(tr(\"DockWindows\"));//設(shè)置主窗口的標(biāo)題欄文字 8     QTextEdit *te=new QTextEdit(this);//定義一個QTextEdit對象作為主窗口 9     te->setText(tr(\"Main Window\"));10     te->setAlignment(Qt::AlignCenter);11     setCentralWidget(te);             //將此編輯框作為主窗體的中央窗體12     //??看翱?13     QDockWidget *dock1=new QDockWidget(tr(\"DockWindow1\"),this);14     QDockWidget *dock2=new QDockWidget(tr(\"DockWindow2\"),this);15     QDockWidget *dock3=new QDockWidget(tr(\"DockWindow3\"),this);16     //可移動17     dock1->setFeatures(QDockWidget::DockWidgetMovable);18     dock1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);19     QTextEdit *te1=new QTextEdit();20     te1->setText(tr(\"Window1,The dock widget can be moved between dicks by user\" \"\"));21     dock1->setWidget(te1);22     addDockWidget(Qt::RightDockWidgetArea,dock1);23     //??看翱?24     //dock2=new QDockWidget(tr(\"DockWindow2\"),this);25     dock2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);26     QTextEdit *te2=new QTextEdit();27     te2->setText(tr(\"Window2,The dock widget can be detached from the main window,\"28                    \"\"\"and floated as an independent window,and can be closed\" ));29     dock2->setWidget(te2);30     addDockWidget(Qt::RightDockWidgetArea,dock2);31     //??看翱?32     //dock3=new QDockWidget(tr(\"DockWindow3\"),this);33     dock3->setFeatures(QDockWidget::AllDockWidgetFeatures);34     QTextEdit *te3=new QTextEdit();35     te3->setText(tr(\"Window3,The dock widget can be closed,moved,add floated\"));36     dock3->setWidget(te3);37     addDockWidget(Qt::RightDockWidgetArea,dock3);38 }39 40 DockWindows::~DockWindows()41 {42 43 }

1.line 17: dock1->setFeatures(QDockWidget::DockWidgetMovable); 這個函數(shù)設(shè)置停靠窗口是否可移動,可關(guān)閉,可懸浮。 在這個持續(xù)中,第一個停靠窗口只能移動,第二個窗口不可移動,也就是說它只能懸浮或者關(guān)閉,不能出現(xiàn)在第一個或者第三個??看翱诘奈恢?。

第三個窗口則具備了上述所有屬性。下面是Qt文檔的解釋:

This property holds whether the dock widget is movable, closable, and floatable. By default, this property is set to a combination of DockWidgetClosable, DockWidgetMovable and DockWidgetFloatable.

2.QDockWidget的隱式共享 在前面講QString時提到了隱式共享,其實隱式共享同樣支持所有的容器類,QDockWidget就是其中之一。 可以看到,我定義了三個QDockWidget對象:dock1,dock2,dock3。事實上,只需要一個QDockWidget對象就足夠了,只需要在每個??看翱诔跏蓟臅r候重新初始化這個dock對象。 那么就會出現(xiàn)一個問題: 在 addDockWidget(Qt::RightDockWidgetArea,dock2); 這段代碼中(出現(xiàn)了三次),如果只用一個dock,會不會使已定義的dock對象不見了?如果這個dock是C++中的一個引用的話,確實會導(dǎo)致對象被覆蓋。但是Qt的隱式共享解決了這個問題,有關(guān)隱式共享的問題之前已經(jīng)解釋過了:http://blog.csdn.net/leehdsniper/article/details/50975227。

【領(lǐng) QT開發(fā)教程 學(xué)習(xí)資料, 點擊下方鏈接莬費領(lǐng)取↓↓ ,先碼住不迷路~】

點擊這里:

標(biāo)簽: