Apa perbedaan antara QMainWindow, QWidget dan QDialog?

123

Apa perbedaan antara QMainWindow, QWidget dan QDialog?

zibib
sumber

Jawaban:

130

A QWidgetadalah kelas dasar untuk semua kelas drawable di Qt. QWidgetKelas berbasis apa saja dapat ditampilkan sebagai jendela dengan menampilkannya jika tidak memiliki induk.

A QDialogdidasarkan pada QWidget, tetapi dirancang untuk ditampilkan sebagai jendela. Ini akan selalu muncul di jendela, dan memiliki fungsi untuk membuatnya berfungsi dengan baik dengan tombol umum pada dialog (terima, tolak, dll.).

QMainWindowdirancang berdasarkan kebutuhan umum yang dimiliki jendela utama. Ini memiliki tempat yang telah ditentukan untuk bilah menu, bilah status, bilah alat, dan widget lainnya. Itu tidak memiliki tunjangan built-in untuk tombol seperti QDialogitu.

Caleb Huitt - cjhuitt
sumber
1
Saya mencari pertanyaan ini tetapi sebenarnya bukan itu jawaban yang saya tunggu-tunggu. Di QtDesigner menggunakan QMainWindow memberi Anda bilah menu dan bilah status. Saat Anda menulis kode sendiri dan menggunakan QMainWindow, Anda tidak memiliki hal ini. Atau ucapan Anda bahwa Anda dapat melakukan sesuatu seperti window.addToolBar ("Toolbar"); dan itu akan menempatkannya di tempat yang telah ditentukan tanpa sakit kepala lainnya?
Lilian A. Moraru
1
@MoraruLilian: Saya sebenarnya tidak menggunakan QMainWindow, jadi saya tidak tahu detailnya. Seperti yang saya katakan dalam jawaban saya, saya tahu ini memiliki tempat untuk mereka, jadi melakukannya dalam kode mungkin sesederhana yang Anda sebutkan.
Caleb Huitt - cjhuitt
8
@Caleb_Huitt Itu melakukan apa yang saya katakan. Saya hanya ingin menjelaskan jika itu yang ingin Anda katakan. Bagaimanapun, saya akan merekomendasikan selalu menggunakan QWidget daripada QMainWindow. Anda bisa mendapatkan masalah, misalnya dengan mengatur Tata Letak lain. Jika Anda ingin menyetel tata letak baru di QMainWindow, Anda harus membuat QWidget dan menyetelnya sebagai widget pusat untuk QMainWin dan saat itu di QWidget Anda bisa setLayout (QLayout *). Meskipun Anda bisa menghindari sakit kepala tambahan hanya dengan menggunakan QWidget. Tentu, QMainWindow menawarkan penyiapan ToolBar dan StatusBar yang mudah tetapi Anda dapat melakukannya sendiri di QWidget ...
Lilian A. Moraru
2
Salah satu alasan kami ingin menggunakan QMainWindowdaripada hanya kelas dasar QWidgetadalah yang QMainWindowmemiliki QDockWidgetdukungan sedangkan QWidgetsendirian tidak
ComradeJoecool
2
@ mLstudent33 Kedengarannya seperti pertanyaan yang bagus untuk dokumentasi, dan jika itu tidak membantu, untuk bertanya di sini sebagai pertanyaan utama daripada di komentar. Salah satu contoh (untuk Qt5) dapat dilihat di doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html
Caleb Huitt - cjhuitt
4

QWidget : adalah kelas dasar untuk semua elemen GUI lainnya dalam modul QtWidgets. Ini bisa merupakan jendela dengan sendirinya, atau menjadi bagian dari QLayout, atau hanya anggota hierarki orang tua-anak.

QDialog : biasanya digunakan untuk - kejutan! - menampilkan dialog sementara saat input pengguna diperlukan.

QMainWindow : adalah kelas praktis yang dapat digunakan sebagai jendela utama aplikasi Anda. Ini memiliki beberapa fitur bagus bawaan: bilah status, bilah alat, dan bilah menu

Lalit kumar
sumber