Partage de technologie

Qt : 19. Fenêtre/sous-fenêtre flottante (introduction aux sous-fenêtres, création de sous-fenêtres dans le code, définition des titres des sous-fenêtres, ajout de contrôles aux sous-fenêtres et définition des positions d'ancrage des sous-fenêtres)

2024-07-12

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

Table des matières

1. Introduction de la sous-fenêtre :

2. Créez une sous-fenêtre à l'aide du code :

3.Définissez le titre de la sous-fenêtre :

4. Ajoutez des contrôles à la fenêtre enfant :

5. Définissez la position d'ancrage de la sous-fenêtre.


1. Introduction de la sous-fenêtre :

  • Dans Qt, vous pouvez créer et gérer des fenêtres enfants (sous-fenêtres) pour implémenter des applications multi-fenêtres.

  • Les fenêtres enfants peuvent être des boîtes de dialogue, des fenêtres indépendantes ou des fenêtres enfants MDI (Multiple Document Interface).

  • Créez des fenêtres enfants via la classe QDockWidget.

2. Créez une sous-fenêtre à l'aide du code :

  • Créez un objet fenêtre enfant : QDockWidget* dockWidget=new QDockWidget();
  • Ajoutez la fenêtre enfant à la fenêtre principale : this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);

        

3.Définissez le titre de la sous-fenêtre :

  • Définissez le titre de la sous-fenêtre : dockWidget->setWindowTitle("Ceci est le titre de la sous-fenêtre");

        

4. Ajoutez des contrôles à la fenêtre enfant :

  • Lors de l'ajout de contrôles à une sous-fenêtre, vous ne pouvez pas définir directement des sous-contrôles pour cette fenêtre.
  • Commencez par créer un objet QWidget distinct, puis définissez le contrôle sur cet objet QWidget.
  • Définissez ensuite cet objet QWidget sur dockWidget.
  1. //为dockWidget赋予QWidget对象
  2. QWidget* container=new QWidget();
  3. dockWidget->setWidget(container);
  • Puisqu'un dockWidget ne peut contenir qu'un seul objet QWidget, si vous souhaitez ajouter un nouveau contrôle, vous devez toujours l'ajouter à l'objet 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. Définissez la position d'ancrage de la sous-fenêtre.

  • Définissez l'emplacement d'accueil autorisé via la méthode setAllowAreas(Qt::DockWidgetArea | Qt::DockWidgetArea). La valeur par défaut est Qt::LeftDockWidgetArea - gauche.
  • Quatre positions peuvent être définies, et la position par défaut est vers le haut :
  • Qt::TopDockWidgetArea——quelque chose
  • Qt::BottomDockWidgetArea——quelque chose
  • Qt::LeftDockWidgetArea ———Ajouter
  • Qt::RightDockWidgetArea —— ...