欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT中QDockWidget控件的使用小結(jié)

 更新時(shí)間:2024年01月03日 11:54:17   作者:冷凝女子  
QDockWidget類提供了一個(gè)小部件,可以??吭赒MainWindow中,也可以作為桌面上的頂級(jí)窗口浮動(dòng),本文主要介紹了QT中QDockWidget控件的使用小結(jié),感興趣的可以了解一下

1.概述

QDockWidget類提供了一個(gè)小部件,可以??吭赒MainWindow中,也可以作為桌面上的頂級(jí)窗口浮動(dòng)。

QDockWidget提供了dock Widget的概念,也稱為工具選項(xiàng)板或?qū)嵱贸绦虼翱?。??看翱谑欠胖迷赒MainWindow中心小部件周圍的??啃〔考^(qū)域中的輔助窗口。??看翱诳梢栽谄洚?dāng)前區(qū)域內(nèi)移動(dòng),移動(dòng)到新區(qū)域,并由最終用戶浮動(dòng)(例如,取消??浚?。QDockWidget API允許程序員限制dock小部件移動(dòng)、浮動(dòng)和關(guān)閉的能力,以及它們可以放置的區(qū)域。

QDockWidget 的主要特點(diǎn):

1. ??抗δ埽篞DockWidget 允許用戶將窗口部件停靠在主窗口的各個(gè)位置,如左側(cè)、右側(cè)、上方或下方。

2. 浮動(dòng)窗口:用戶還可以將 QDockWidget 拖動(dòng)到獨(dú)立的浮動(dòng)窗口中。

3. 可關(guān)閉:QDockWidget 可以關(guān)閉,允許用戶根據(jù)需要隱藏或顯示它。

4. 自定義部件:你可以將自定義的部件放在 QDockWidget 中,以構(gòu)建自定義的界面元素。

2.常用函數(shù)介紹

QDockWidget 類提供了一系列函數(shù),用于配置和管理停靠式窗口的行為和外觀。以下是一些常用的 QDockWidget 函數(shù)的介紹和使用方法:

1.setWidget:設(shè)置??看翱谥械牟考?/p>

QDockWidget dockWidget("標(biāo)題", &mainWindow);

QWidget *customWidget = new QWidget;

dockWidget.setWidget(customWidget);

2.setAllowedAreas:設(shè)置允許??康膮^(qū)域

dockWidget.setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

3.setFeatures:設(shè)置??看翱诘墓δ芴匦?,如關(guān)閉按鈕、可浮動(dòng)等

dockWidget.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable);

4.setWindowTitle:設(shè)置??看翱诘臉?biāo)題

dockWidget.setWindowTitle("My Dock Widget");

5.setVisible:設(shè)置停靠窗口的可見(jiàn)性

dockWidget.setVisible(true); // 顯示??看翱?/pre>

6.isFloating:檢查??看翱谑欠裨诟?dòng)狀態(tài)

bool isFloating = dockWidget.isFloating();

7.close:關(guān)閉??看翱?/p>

dockWidget.close();

8.toggleViewAction:獲取一個(gè) QAction 對(duì)象,用于在工具欄中切換??看翱诘目梢?jiàn)性

QAction *toggleAction = dockWidget.toggleViewAction();
toolBar->addAction(toggleAction);

9.topLevelChanged 信號(hào):在停靠窗口的浮動(dòng)狀態(tài)發(fā)生變化時(shí)觸發(fā)

QObject::connect(&dockWidget, &QDockWidget::topLevelChanged, [&](bool floating) {
    if (floating) {
        qDebug() << "窗口已浮動(dòng)";
    } else {
        qDebug() << "窗口已???;
    }
});

這些函數(shù)可以幫助你配置 QDockWidget 控件的各種屬性,包括設(shè)置??繀^(qū)域、標(biāo)題、可見(jiàn)性、功能特性等。你還可以使用 toggleViewAction 函數(shù)來(lái)創(chuàng)建一個(gè)切換??看翱诳梢?jiàn)性的操作,以便用戶可以通過(guò)工具欄切換窗口的顯示狀態(tài)。topLevelChanged 信號(hào)可以用于監(jiān)測(cè)停靠窗口的浮動(dòng)狀態(tài)的變化。根據(jù)應(yīng)用程序的需求,你可以使用這些函數(shù)來(lái)自定義??看翱诘男袨楹屯庥^。

3.QDockWidget布局相關(guān)

  • ??刻匦?/p>

setFeatures()方法設(shè)置停靠窗體的特性,參數(shù)QDockWidget::DockWidgetFeatures指定停靠窗體的特性,包括以下幾種參數(shù)。

① QDockWidget::DockWidgetClosable:??看绑w可關(guān)閉。

② QDockWidget::DockWidgetMovable:停靠窗體可移動(dòng)。

③ QDockWidget::DockWidgetFloatable:??看绑w可浮動(dòng)。

④ QDockWidget::AllDockWidgetFeatures:此參數(shù)表示擁有??看绑w的所有特性。

⑤ QDockWidget::NoDockWidgetFeatures:不可移動(dòng)、不可關(guān)閉、不可浮動(dòng)。

  • ??繀^(qū)域

setAllowedAreas()方法設(shè)置??看绑w可??康膮^(qū)域,參數(shù)Qt::DockWidgetAreas指定了停靠窗體可??康膮^(qū)域,包括以下幾種參數(shù)。

① Qt::LeftDockWidgetArea:可在主窗口的左側(cè)???。

② Qt::RightDockWidgetArea:可在主窗口的右側(cè)???。

③ Qt::TopDockWidgetArea:可在主窗口的頂端停靠。

④ Qt::BottomDockWidgetArea:可在主窗口的底部???。

⑤ Qt::AllDockWidgetArea:可在主窗口任意(以上四個(gè))部位???。

⑥ Qt::NoDockWidgetArea:只可??吭诓迦胩帯?/p>

  • 添加dock

addDockWidget()方法用于添加dock,給dock指定位置,同時(shí)也可以更改dock的位置。

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget)
  • 分割dock

splitDockWidget()方法用于分割dock窗口,是把兩個(gè)dock進(jìn)行左右或上下并排布置,做成一個(gè)類似QSplit的功能,分割原則是:水平從左到右,豎直從上到下。

void QMainWindow::splitDockWidget(QDockWidget * first, QDockWidget * second, Qt::Orientation orientation)
  • dock tab化窗口

tabifyDockWidget()方法用于tab化窗口,把多個(gè)dock變成一個(gè)tab形式的窗體。

void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)
  • 初始化大小

靠左右布局的QDockWidget的高度是自適應(yīng)的,寬度需要初始化設(shè)置,同理靠上下布局的高度需要初始化設(shè)置。使用splitDockWidget分割、tabifyDockWidget tab化窗口的QDockWidget的初始化大小與其依賴的QDockWidget(參數(shù)first)初始化大小一樣。

void QMainWindow::resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation)

它的第一個(gè)參數(shù)是用來(lái)配置是哪個(gè)dock窗口需要調(diào)整大??;第二個(gè)參數(shù)是用來(lái)配置dock所占的像素大小,如果配置大于或者小于QMainWindow本身空間,Qt會(huì)根據(jù)所配置的像素大小的相對(duì)權(quán)重分配到dock中;第三個(gè)參數(shù)用來(lái)配置調(diào)整的方向,如果為Qt::Horizontal,調(diào)整dock寬度,Qt::Vertical調(diào)整dock高度,確定了停靠位置后resizeDocks才起作用。需要注意的是Qt官方文檔上有注明這個(gè)方法在Qt5.6中引入,所以比Qt5.6低的版本并不能使用本方法。resizeDocks在多行或多列時(shí)初始化高寬無(wú)效問(wèn)題!

使用setFeatures、setAllowedAreas、addDockWidget、splitDockWidget、tabifyDockWidget、resizeDocks可以滿足基本的Dock布局了。

  • 標(biāo)題欄設(shè)置

去掉標(biāo)題欄,但是不能拖動(dòng)了。

QWidget *Widget = new QWidget;

ui->dockwidget_dockWidget_1->setTitleBarWidget(Widget);

自定義QWidget即可以自定義標(biāo)題欄。

  • 標(biāo)題欄豎起

ui->dockwidget_dockWidget_6->setFeatures(QDockWidget::DockWidgetVerticalTitleBar);

4.QDockWidget的使用注意事項(xiàng)

1. 容器空間的設(shè)置

當(dāng)QDockWidget和其他QWidget(比如QFrame、QLayout等)一起使用時(shí),必須保證這些QWidget的容器空間(容器的大小和位置)是正確的。要使用setWidget()函數(shù)將QWidget添加到QDockWidget中,或者直接使用構(gòu)造函數(shù)初始化QDockWidget,但是需要注意QWidget的大小和位置。

2. 可??繀^(qū)域的控制

QDockWidget可以通過(guò)setAllowedAreas()函數(shù)來(lái)控制停靠的區(qū)域。在設(shè)置之前,必須先調(diào)用mainWindow()函數(shù)獲取主窗口對(duì)象,然后利用主窗口的setDockOptions()函數(shù)設(shè)置最大化和自動(dòng)擴(kuò)展區(qū)域。同時(shí)要根據(jù)實(shí)際情況設(shè)置QDockWidget和其他QMainWindow的layout,從而保證它們的位置和大小是正確的。

3. 內(nèi)存泄露問(wèn)題

當(dāng)QDockWidget被從主窗口中移除時(shí),需要通過(guò)delete函數(shù)顯式地銷毀它。如果沒(méi)有顯式銷毀,可能會(huì)導(dǎo)致內(nèi)存泄露問(wèn)題。

5.使用場(chǎng)景

以下是 QDockWidget 的一些常見(jiàn)使用場(chǎng)景:

  • 工具欄:將各種工具按鈕、復(fù)選框、文本框等組合成一個(gè)可停靠的工具欄,方便用戶使用。
  • 屬性窗口:顯示選中對(duì)象的各種屬性,如顏色、大小、邊框、位置等,便于用戶對(duì)其進(jìn)行編輯。
  • 輸出窗口:顯示應(yīng)用程序的輸出信息、錯(cuò)誤信息、調(diào)試信息等,便于用戶了解應(yīng)用程序的運(yùn)行狀態(tài)。
  • 工程瀏覽器:顯示項(xiàng)目文件、文件夾、類、函數(shù)等信息的面板,方便用戶導(dǎo)航和查找。
  • 日志窗口:記錄應(yīng)用程序的操作日志、錯(cuò)誤日志等信息,方便用戶了解應(yīng)用程序的運(yùn)行情況和排查錯(cuò)誤。

6.簡(jiǎn)單應(yīng)用示例代碼

#include "main_window.h"
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("??看翱?);
    this->setFixedSize(600, 400);
    QTextEdit *pTextEdit = new QTextEdit(this);
    pTextEdit->setText("主窗口測(cè)試");
    pTextEdit->setAlignment(Qt::AlignLeft);
    this->setCentralWidget(pTextEdit);
    //??看翱趯?shí)現(xiàn)
    QDockWidget *pDock = new QDockWidget("停靠窗口1", this);
    pDock->setFeatures(QDockWidget::DockWidgetMovable);
    pDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
    QTextEdit *pText1 = new QTextEdit(this);
    pText1->setText("你好");
    pDock->setWidget(pText1);
    this->addDockWidget(Qt::RightDockWidgetArea, pDock);
}

到此這篇關(guān)于QT中QDockWidget控件的使用小結(jié)的文章就介紹到這了,更多相關(guān)QT QDockWidget控件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C語(yǔ)言中字符串庫(kù)函數(shù)的實(shí)現(xiàn)及模擬

    C語(yǔ)言中字符串庫(kù)函數(shù)的實(shí)現(xiàn)及模擬

    C語(yǔ)言中有很多數(shù)據(jù)類型,比如int(整數(shù)類型)、char(字符類型)、以及浮點(diǎn)型的double(雙精度)等。但是有一點(diǎn)就是我們發(fā)現(xiàn)這里并沒(méi)有提到我們常見(jiàn)的有關(guān)字符串的類型。本文為大家介紹了C語(yǔ)言中字符串庫(kù)函數(shù)的實(shí)現(xiàn)及模擬,需要的可以參考一下
    2022-11-11
  • Qt?http編程之nlohmann?json庫(kù)使用詳解

    Qt?http編程之nlohmann?json庫(kù)使用詳解

    nlohmann是一個(gè)C++的JSON庫(kù),它提供了方便的方式來(lái)解析、生成和操作JSON數(shù)據(jù),這篇文章主要為大家介紹了nlohmann?json庫(kù)的簡(jiǎn)單使用,希望對(duì)大家有所幫助
    2024-04-04
  • c++實(shí)現(xiàn)md5加密的代碼

    c++實(shí)現(xiàn)md5加密的代碼

    這篇文章主要介紹了c++實(shí)現(xiàn)md5加密的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • c++讀取和寫入TXT文件的整理方法

    c++讀取和寫入TXT文件的整理方法

    今天小編就為大家分享一篇c++讀取和寫入TXT文件的整理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • C語(yǔ)言指針類型與野指針引起的原因

    C語(yǔ)言指針類型與野指針引起的原因

    我們C語(yǔ)言獨(dú)一無(wú)二的特色——指針。說(shuō)起指針,可能很多人都是還沒(méi)學(xué)就已經(jīng)聽(tīng)說(shuō)過(guò)其鼎鼎大名,因?yàn)橛泻芏鄠餮院屯嫘κ裁吹恼f(shuō)指針很難,其實(shí)大家大可不必有畏難情緒,指針這個(gè)東西雖然確實(shí)有一定難度,但是這是基于其優(yōu)秀的靈活性而衍生的一點(diǎn)小問(wèn)題
    2023-02-02
  • C語(yǔ)言?指針數(shù)組進(jìn)階詳解

    C語(yǔ)言?指針數(shù)組進(jìn)階詳解

    在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活
    2022-02-02
  • C++實(shí)現(xiàn)投骰子的隨機(jī)游戲

    C++實(shí)現(xiàn)投骰子的隨機(jī)游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)投骰子的隨機(jī)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • C++設(shè)計(jì)模式之抽象工廠模式

    C++設(shè)計(jì)模式之抽象工廠模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之抽象工廠模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換

    C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換

    這篇文章主要介紹了C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 盤點(diǎn)分析C語(yǔ)言中少見(jiàn)卻強(qiáng)大的字符串函數(shù)

    盤點(diǎn)分析C語(yǔ)言中少見(jiàn)卻強(qiáng)大的字符串函數(shù)

    這篇文章主要為大家盤點(diǎn)及分析C語(yǔ)言中少見(jiàn)卻強(qiáng)大的字符串函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02

最新評(píng)論