Classe QDockWidget da janela de ancoragem do QT

Classe QDockWidget da janela de ancoragem do QT

Introdução à classe QDockWidget

QDockWidgetA classe fornece um widget que pode ser QMainWindowencaixado ou flutuado como uma janela de nível superior na área de trabalho.

QDockWidgetFornece o conceito de widgets encaixados, também conhecidos como painéis de ferramentas ou janelas de utilitários. Janelas encaixadas são janelas secundárias localizadas na área do widget encaixado ao redor do widget QMainWindowcentral .

Uma janela encaixada pode ser movida dentro de sua área atual, movida para uma nova área ou flutuada (por exemplo, desencaixada). QDockWidgetA API permite aos programadores a capacidade de restringir o movimento, a flutuação e o fechamento de widgets encaixados, bem como a área em que eles podem ser colocados.

QDockWidgetConsiste em uma barra de título e uma área de conteúdo. A barra de título exibe o título da janela, botões flutuantes e botão Fechar para widgets encaixados. Dependendo do estado QDockWidget do , os botões de flutuação e fechamento podem ser desativados ou não exibidos. A aparência visual das barras de título e botões depende dos estilos usados. QDockWidgetPode ser usado como um wrapper para seus subwidgets, configurando setWidget()subwidgets. Dicas de tamanho personalizado, tamanhos mínimo e máximo e políticas de tamanho devem ser implementados por widgets filhos. QDockWidgetirá obedecê-los, ajustando suas próprias restrições, incluindo molduras e barras de ferramentas. Não devemos QDockWidgetdefinir restrições de tamanho para isso, porque elas QDockWidgetmudam dependendo se ele está bloqueado ou não, e um QDockWidgetwidget bloqueado não inclui um quadro ou uma pequena barra de ferramentas.

QDockWidgetO objeto contém algumas propriedades, como: move, hover, close, etc., que são todos tipos enumerados:

[Falha na transferência da imagem do link externo, o site de origem pode ter um mecanismo anti-leeching, é recomendável salvar a imagem e carregá-la diretamente (img-0R46lf3M-1682740086615) (Pictures/QT Basic Docking Window QDockWidget Class/B_QT Basic Docking Window QDockWidget Class.PNG )]

QDockWidgetO local que pode ser colocado também é um tipo de enumeração:

Funções e métodos explicados

O fluxo geral de configuração de uma janela encaixada é o seguinte:

  1. Criar QDockWidgetum formulário encaixado para um objeto
  2. Define as propriedades deste formulário encaixado, normalmente chamando setFeatures()esetAllowedAreas()
  3. Crie um novo controle para ser inserido no formulário encaixado, por exemplo QListWidget,QTextEdit
  4. Para inserir um controle em um formulário encaixado, o método QDockWidgetchamadosetWidget()
  5. Inclua este formulário encaixado usando addDockWidget()o métodoMainWindow
    setWindowTitle(tr("QT基础之停靠窗口QDockWidget类"));
    QTextEdit *textEdit = new QTextEdit(this);
    textEdit->setText(tr("主窗口"));
    textEdit->setAlignment(Qt::AlignCenter);
    this->setCentralWidget(textEdit); // 设置 textEdit 为主窗口的中央窗体

    // 停靠窗口1
    // 步骤1 创建一个`QDockWidget`对象的停靠窗体
    QDockWidget *dock1 = new QDockWidget(tr("停靠窗口1"),this);
    // 步骤2 设置此停靠窗体的属性,通常调用 `setFeatures()`以及 `setAllowedAreas()`
    dock1->setFeatures(QDockWidget::DockWidgetMovable); // 可移动
    dock1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); // 可 左侧停靠 和 右侧停靠
    // 步骤3 新建一个要插入停靠窗体的控件,比如 `QListWidget`、`QTextEdit`
    QTextEdit *textEdit1 = new QTextEdit(this);
    textEdit1->setText(tr("停靠窗口1,可移动到左侧停靠和右侧停靠"));
    // 步骤4 将控件插入停靠窗体,调用`QDockWidget`的`setWidget()`方法
    dock1->setWidget(textEdit1);
    // 步骤5 使用 `addDockWidget()`方法在`MainWindow`中加入此停靠窗体
    this->addDockWidget(Qt::RightDockWidgetArea,dock1);


    // 停靠窗口2
    // 步骤1
    QDockWidget *dock2 = new QDockWidget(tr("停靠窗口2"),this);
    // 步骤2
    dock2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); // 可关闭 可浮动
    // 步骤3
    QTextEdit *textEdit2 = new QTextEdit(this);
    textEdit2->setText(tr("停靠窗口2,可关闭 可浮动"));
    // 步骤4
    dock2->setWidget(textEdit2);
    // 步骤5
    this->addDockWidget(Qt::RightDockWidgetArea,dock2);


    // 停靠窗口3
    // 步骤1
    QDockWidget *dock3 = new QDockWidget(tr("停靠窗口3"),this);
    // 步骤2
    dock3->setFeatures(QDockWidget::AllDockWidgetFeatures); // 可移动 可关闭 可浮动
    // 步骤3
    QTextEdit *textEdit3 = new QTextEdit(this);
    textEdit3->setText(tr("停靠窗口3,可移动 可关闭 可浮动"));
    // 步骤4
    dock3->setWidget(textEdit3);
    // 步骤5
    this->addDockWidget(Qt::RightDockWidgetArea,dock3);

setFeatures(QDockWidget::DockWidgetFeatures features)

Definir as propriedades de um formulário encaixado

QDockWidget::DockWidgetFeatures Refere-se às propriedades das janelas encaixadas

    enum DockWidgetFeature {
    
    
        DockWidgetClosable    = 0x01,
        DockWidgetMovable     = 0x02,
        DockWidgetFloatable   = 0x04,
        DockWidgetVerticalTitleBar = 0x08,

        DockWidgetFeatureMask = 0x0f,
        AllDockWidgetFeatures = DockWidgetClosable|DockWidgetMovable|DockWidgetFloatable, // ### Qt 6: remove
        NoDockWidgetFeatures  = 0x00,

        Reserved              = 0xff
    };
característica ilustrar
DockWidgetClosable O formulário encaixado pode ser fechado
DockWidgetMovable O formulário encaixado pode ser movido
DockWidgetFloatable Formulários encaixados podem ser flutuantes
DockWidgetVerticalTitleBar Exibir uma barra de título vertical à esquerda
DockWidgetFeatureMask mascarar
AllDockWidgetFeatures Fechável Removível Flutuável
NoDockWidgetFeatures não pode ser fechado não é móvel não é flutuante

setAllowedAreas(Qt::DockWidgetAreas areas)

Defina a área encaixável do formulário ancorado

Qt::DockWidgetAreasRefere-se à área acoplável

    enum DockWidgetArea {
    
    
        LeftDockWidgetArea = 0x1,
        RightDockWidgetArea = 0x2,
        TopDockWidgetArea = 0x4,
        BottomDockWidgetArea = 0x8,
        DockWidgetArea_Mask = 0xf,
        AllDockWidgetAreas = DockWidgetArea_Mask,
        NoDockWidgetArea = 0
    };
característica ilustrar
LeftDockWidgetArea Acoplável no lado esquerdo da janela principal
RightDockWidgetArea Acoplável no lado direito da janela principal
TopDockWidgetArea Acoplável na parte superior da janela principal
BottomDockWidgetArea Acoplável na parte inferior da janela principal
DockWidgetArea_Mask mascarar
AllDockWidgetAreas Pode ser encaixado em qualquer posição (quatro superiores)
NoDockWidgetArea só pode ser encaixado no in-out

おすすめ

転載: blog.csdn.net/m0_45463480/article/details/130439410