Berbagi teknologi

Qt: 19. Jendela mengambang/sub-jendela (pengenalan sub-jendela, membuat sub-jendela dalam kode, mengatur judul sub-jendela, menambahkan kontrol ke sub-jendela, dan mengatur posisi docking sub-jendela)

2024-07-12

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

Daftar isi

1. Pengenalan sub-jendela:

2. Buat sub-jendela menggunakan kode:

3.Tetapkan judul subjendela:

4. Tambahkan kontrol ke subjendela:

5. Atur posisi docking subjendela.


1. Pengenalan sub-jendela:

  • Di Qt, Anda dapat membuat dan mengelola jendela anak (subjendela) untuk mengimplementasikan aplikasi multi-jendela.

  • Jendela anak dapat berupa kotak dialog, jendela independen, atau jendela anak MDI (Multiple Document Interface).

  • Buat jendela anak melalui kelas QDockWidget.

2. Buat sub-jendela menggunakan kode:

  • Buat objek jendela anak: QDockWidget* dockWidget=new QDockWidget();
  • Tambahkan jendela anak ke jendela utama: this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);

        

3.Tetapkan judul subjendela:

  • Tetapkan judul subjendela: dockWidget->setWindowTitle("Ini adalah judul subjendela");

        

4. Tambahkan kontrol ke subjendela:

  • Saat menambahkan kontrol ke subjendela, Anda tidak bisa langsung mengatur subkontrol untuk jendela ini.
  • Pertama, buat objek QWidget terpisah, lalu atur kontrol ke objek QWidget ini.
  • Kemudian atur objek QWidget ini menjadi dockWidget.
  1. //为dockWidget赋予QWidget对象
  2. QWidget* container=new QWidget();
  3. dockWidget->setWidget(container);
  • Karena dockWidget hanya dapat berisi satu objek QWidget, jika Anda ingin menambahkan kontrol baru, Anda masih harus menambahkannya ke objek 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. Atur posisi docking subjendela.

  • Tetapkan lokasi docking yang diizinkan melalui metode setAllowAreas(Qt::DockWidgetArea | Qt::DockWidgetArea) . Defaultnya adalah Qt::LeftDockWidgetArea - kiri.
  • Empat posisi dapat diatur, dan posisi defaultnya adalah:
  • Qt::TopDockWidgetArea——Selesai
  • Qt::BottomDockWidgetArea——berikutnya
  • Qt::LeftDockWidgetArea——Menyesuaikan
  • Qt::RightDockWidgetArea——berikutnya