Compartir tecnología

Qt: 19. Ventana/subventana flotante (introducción a las subventanas, creación de subventanas en código, configuración de títulos de subventanas, adición de controles a las subventanas y configuración de posiciones de acoplamiento de subventanas)

2024-07-12

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

Tabla de contenido

1. Introducción a la subventana:

2. Cree una subventana usando el código:

3.Establezca el título de la subventana:

4. Agregue controles a la subventana:

5. Establezca la posición de acoplamiento de la ventana secundaria.


1. Introducción a la subventana:

  • En Qt, puede crear y administrar ventanas secundarias (subventanas) para implementar aplicaciones de ventanas múltiples.

  • Las ventanas secundarias pueden ser cuadros de diálogo, ventanas independientes o ventanas secundarias MDI (Interfaz de documentos múltiples).

  • Cree ventanas secundarias a través de la clase QDockWidget.

2. Cree una subventana usando el código:

  • Cree un objeto de ventana secundaria: QDockWidget* dockWidget=new QDockWidget();
  • Agregue la ventana secundaria a la ventana principal: this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);

        

3.Establezca el título de la subventana:

  • Establezca el título de la subventana: dockWidget->setWindowTitle("Este es el título de la subventana");

        

4. Agregue controles a la subventana:

  • Al agregar controles a una subventana, no puede configurar subcontroles directamente para esta ventana.
  • Primero, cree un objeto QWidget separado y luego establezca el control en este objeto QWidget.
  • Luego configure este objeto QWidget en dockWidget.
  1. //为dockWidget赋予QWidget对象
  2. QWidget* container=new QWidget();
  3. dockWidget->setWidget(container);
  • Dado que un dockWidget solo puede contener un objeto QWidget, si desea agregar un nuevo control, aún debe agregarlo al 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. Establezca la posición de acoplamiento de la ventana secundaria.

  • Establezca la ubicación de acoplamiento permitida mediante el método setAllowAreas(Qt::DockWidgetArea | Qt::DockWidgetArea). El valor predeterminado es Qt::LeftDockWidgetArea - izquierda.
  • Se pueden configurar cuatro posiciones y la posición predeterminada es arriba:
  • Qt::TopDockWidgetArea——¿Qué es?
  • Qt::BottomDockWidgetArea——
  • Qt::LeftDockWidgetArea——Abrir
  • Qt::RightDockWidgetArea——Area