QMainWindow, QWidget ve QDialog arasındaki fark nedir?


Yanıtlar:


130

A QWidget, Qt'deki tüm çekilebilir sınıflar için temel sınıftır. Herhangi bir- QWidgettabanlı sınıf, ebeveyni olmadığında gösterilerek bir pencere olarak gösterilebilir.

A QDialogdayanmaktadırQWidget , ancak bir pencere olarak gösterilmek üzere tasarlanmıştır. Her zaman bir pencerede görünür ve iletişim kutularındaki ortak düğmelerle (kabul et, reddet, vb.) İyi çalışmasını sağlayacak işlevlere sahiptir.

QMainWindowbir ana pencerenin sahip olması gereken ortak ihtiyaçlar etrafında tasarlanmıştır. Menü çubuğu, durum çubuğu, araç çubuğu ve diğer widget'lar için önceden tanımlanmış yerlere sahiptir. Yaptığı gibi düğmeler için herhangi bir yerleşik ödenek QDialogyoktur.


1
Bu soruyu aradım ama beklediğim cevap bu değildi. QtDesigner'da bir QMainWindow kullanarak size bir menü çubuğu ve bir durum çubuğu verir. Kodu kendiniz yazıp QMainWindow'u kullandığınızda bunlara sahip olmazsınız. Veya window.addToolBar ("Araç Çubuğu") gibi bir şey yapabileceğinizi söylemeniz; ve başka bir baş ağrısı olmadan önceden tanımlanmış bir yere yerleştirecek mi?
Lilian A. Moraru

1
@MoraruLilian: Aslında QMainWindow kullanmıyorum, bu yüzden ayrıntıları bilmiyorum. Cevabımda da söylediğim gibi, onlar için yerleri olduğunu biliyorum, bu yüzden bunu kodda yapmak sizin belirttiğiniz kadar basit olabilir.
Caleb Huitt - cjhuitt

8
@Caleb_Huitt Dediğimi yapıyor. Söylemeye çalıştığın şey buysa, netleştirmek istedim. Her neyse, QMainWindow yerine her zaman QWidget kullanmanızı tavsiye ederim. Örneğin başka bir Düzen ayarlayarak sorunlara girebilirsiniz. QMainWindow'da yeni bir düzen ayarlamak istiyorsanız, bir QWidget oluşturmanız ve bunu QMainWin için merkezi bir pencere öğesi olarak ayarlamanız gerekir ve tam o sırada QWidget'teLayout'u (QLayout *) ayarlayabilirsiniz. Sadece QWidget kullanarak ek baş ağrılarından kaçınabilirsiniz. Elbette, QMainWindow, Araç Çubuğu ve Durum Çubuğunun bu kolay kurulumunu sunuyor ancak bunu QWidget'te kendiniz yapabilirsiniz ...
Lilian A. Moraru

2
QMainWindowYalnızca temel sınıf yerine kullanmayı QWidgetQMainWindowQDockWidgetQWidget
düşünmemizin bir

2
@ mLstudent33 Bu, dokümantasyon için iyi bir soru gibi görünüyor ve eğer bu yardımcı olmazsa, burada yorumlardan ziyade birincil soru olarak sormak. Bir örnek (Qt5 için) doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html
Caleb Huitt - cjhuitt

4

QWidget : QtWidgets modülündeki diğer tüm GUI öğeleri için temel bir sınıftır. Kendi başına bir pencere oluşturabilir veya bir QLayout'un parçası olabilir veya sadece ebeveyn-çocuk hiyerarşisinin bir üyesi olabilir.

QDialog : genellikle - sürpriz yapmak için kullanılır! - kullanıcı girişi gerektiğinde geçici bir iletişim kutusu görüntüler.

QMainWindow : uygulamanızın ana penceresi olarak kullanılabilecek bir kolaylık sınıfıdır. Yerleşik bazı güzel özelliklere sahiptir: bir durum çubuğu, araç çubukları ve bir menü çubuğu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.