Compartilhamento de tecnologia

Qt: 19. Janela/subjanela flutuante (introdução a subjanelas, criação de subjanelas em código, configuração de títulos de subjanelas, adição de controles a subjanelas e configuração de posições de encaixe de subjanelas)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Índice

1. Introdução à subjanela:

2. Crie uma subjanela usando código:

3.Defina o título da subjanela:

4. Adicione controles à janela filha:

5. Defina a posição de encaixe da subjanela.


1. Introdução à subjanela:

  • No Qt, você pode criar e gerenciar janelas filhas (subjanelas) para implementar aplicativos de múltiplas janelas.

  • As janelas filhas podem ser caixas de diálogo, janelas independentes ou janelas filhas MDI (Multiple Document Interface).

  • Crie janelas filhas por meio da classe QDockWidget.

2. Crie uma subjanela usando código:

  • Crie um objeto de janela filho: QDockWidget* dockWidget=new QDockWidget();
  • Adicione a janela filha à janela principal: this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);

        

3.Defina o título da subjanela:

  • Defina o título da subjanela: dockWidget->setWindowTitle("Este é o título da subjanela");

        

4. Adicione controles à janela filha:

  • Ao adicionar controles a uma subjanela, você não pode definir subcontroles diretamente para esta janela.
  • Primeiro, crie um objeto QWidget separado e, em seguida, defina o controle para esse objeto QWidget.
  • Em seguida, defina este objeto QWidget como dockWidget.
  1. //为dockWidget赋予QWidget对象
  2. QWidget* container=new QWidget();
  3. dockWidget->setWidget(container);
  • Como um dockWidget pode conter apenas um objeto QWidget, se você quiser adicionar um novo controle, ainda será necessário adicioná-lo ao objeto QWidget.
  1. MainWindow::MainWindow(QWidget *parent)
  2. : QMainWindow(parent)
  3. , ui(new Ui::MainWindow)
  4. {
  5. ui->setupUi(this);
  6. QDockWidget* dockWidget=new QDockWidget();
  7. this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
  8. dockWidget->setWindowTitle("这是子窗口的标题");
  9. //为dockWidget赋予QWidget对象
  10. QWidget* container=new QWidget();
  11. dockWidget->setWidget(container);
  12. //创建两个控件
  13. QLabel* label=new QLabel("这是一个label控件");
  14. QPushButton* pushButton=new QPushButton("这是一个按钮");
  15. //创建一个布局管理利器,并且设置到QWidget对象中
  16. QVBoxLayout* layout=new QVBoxLayout();
  17. container->setLayout(layout);
  18. //将两个控件添加到布局管理器中
  19. layout->addWidget(label);
  20. layout->addWidget(pushButton);
  21. }

5. Defina a posição de encaixe da subjanela.

  • Defina o local de encaixe permitido por meio do método setAllowAreas(Qt::DockWidgetArea | Qt::DockWidgetArea). O padrão é Qt::LeftDockWidgetArea - esquerda.
  • Quatro posições podem ser definidas e a posição padrão é para cima:
  • Qt::TopDockWidgetArea——上
  • Qt::BottomDockWidgetArea——Este
  • Qt::LeftDockWidgetArea—— 左
  • Qt::RightDockWidgetArea——como