Обмен технологиями

Qt: 19. Плавающее окно/подокно (знакомство с подокнами, создание подокн в коде, установка заголовков подокна, добавление элементов управления в подокна и установка позиций закрепления подокна)

2024-07-12

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

Оглавление

1. Введение в подокно:

2. Создайте подокно, используя код:

3.Установите заголовок подокна:

4. Добавьте элементы управления в подокно:

5. Установите положение закрепления дополнительного окна.


1. Введение в подокно:

  • В Qt вы можете создавать дочерние окна (подокна) и управлять ими для реализации многооконных приложений.

  • Дочерние окна могут быть диалоговыми окнами, независимыми окнами или дочерними окнами MDI (многодокументный интерфейс).

  • Создайте дочерние окна с помощью класса QDockWidget.

2. Создайте подокно, используя код:

  • Создайте объект дочернего окна: QDockWidget*ockWidget=new QDockWidget();
  • Добавьте дочернее окно в главное окно: this->addDockWidget(Qt::LeftDockWidgetArea,ockWidget);

        

3.Установите заголовок подокна:

  • Установите заголовок подокна:ockWidget->setWindowTitle("Это заголовок подокна");

        

4. Добавьте элементы управления в подокно:

  • При добавлении элементов управления в подокно вы не можете напрямую установить подокна для этого окна.
  • Сначала создайте отдельный объект QWidget, а затем установите элемент управления на этот объект QWidget.
  • Затем установите для этого объекта QWidget значение DockWidget.
  1. //为dockWidget赋予QWidget对象
  2. QWidget* container=new QWidget();
  3. dockWidget->setWidget(container);
  • Поскольку DockWidget может содержать только один объект QWidget, если вы хотите добавить новый элемент управления, вам все равно придется добавить его в объект 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. Установите положение закрепления дополнительного окна.

  • Установите разрешенное место стыковки с помощью метода setAllowAreas(Qt::DockWidgetArea | Qt::DockWidgetArea). По умолчанию Qt::LeftDockWidgetArea — слева.
  • Можно установить четыре положения, положение по умолчанию — вверху:
  • Qt::TopDockWidgetArea ———
  • Qt::BottomDockWidgetArea ———
  • Qt::LeftDockWidgetArea ———
  • Qt::RightDockWidgetArea ———