Sự khác nhau giữa QMainWindow, QWidget và QDialog là gì?Sự khác nhau giữa QMainWindow, QWidget và QDialog là gì?
79
A
Trả lời
81
A QWidget
là lớp cơ sở cho tất cả các lớp có thể vẽ trong Qt. Bất kỳ lớp học nào có thể được hiển thị như một cửa sổ bằng cách hiển thị nó khi nó không có cha mẹ.
A QDialog
được dựa trên QWidget
nhưng được thiết kế để hiển thị dưới dạng cửa sổ. Nó sẽ luôn luôn xuất hiện trong một cửa sổ, và có chức năng để làm cho nó hoạt động tốt với các nút thông thường trên hộp thoại (chấp nhận, từ chối, vv).
QMainWindow
được thiết kế theo nhu cầu chung cho cửa sổ chính. Nó có các vị trí được xác định trước cho thanh trình đơn, thanh trạng thái, thanh công cụ và các tiện ích khác. Nó không có bất kỳ phụ cấp tích hợp nào cho các nút như QDialog
.
Các vấn đề liên quan
- 1. Sự khác nhau giữa WPF và WinForms là gì?
- 2. Sự khác nhau giữa JavaScript và Java là gì?
- 3. Sự khác nhau giữa ODBC và OleDB là gì?
- 4. Sự khác nhau giữa SGML và XML là gì?
- 5. Sự khác nhau giữa DefaultSelenium và RemoteWebDriver là gì?
- 6. Sự khác nhau giữa RMI và Corba là gì?
- 7. Sự khác nhau giữa scgi và wsgi là gì?
- 8. Sự khác nhau giữa wsHttpBinding và ws2007HttpBinding là gì?
- 9. Sự khác nhau giữa Pingback và Trackback là gì?
- 10. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 11. Sự khác nhau giữa AxInterop và Interop là gì?
- 12. Sự khác nhau giữa CellClick và CellMouseClick là gì?
- 13. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 14. Sự khác nhau giữa JSP và Facelets là gì?
- 15. Sự khác nhau giữa hg quên và hg là gì?
- 16. Sự khác nhau giữa GDI và GDI + là gì?
- 17. Sự khác nhau giữa đá quý và plugin là gì?
- 18. Sự khác nhau giữa metaClass.methods và metaClass.metaMethods là gì?
- 19. Sự khác nhau giữa kEND và $ end là gì?
- 20. Sự khác nhau giữa java và jsp là gì?
- 21. Sự khác nhau giữa Application.Run() và Form.ShowDialog() là gì?
- 22. Sự khác nhau giữa -0 và 0 là gì?
- 23. Sự khác nhau giữa HTTP 1.0 và 1.1 là gì?
- 24. Sự khác nhau giữa java.lang.Math và java.lang.StrictMath là gì?
- 25. Sự khác nhau giữa " " và "" là gì?
- 26. Sự khác nhau giữa Spring BeanFactoryAware và ApplicationContextAware là gì?
- 27. sự khác nhau giữa SCRIPT_FILENAME và SCRIPT_NAME là gì?
- 28. Sự khác nhau giữa JSP và JSTL là gì?
- 29. Sự khác nhau giữa JSF và Facelets là gì?
- 30. Sự khác nhau giữa javax.inject.Inject và com.google.inject.Inject là gì?
Tôi đã tìm kiếm câu hỏi này nhưng đó không thực sự là câu trả lời tôi đang chờ đợi. Trong QtDesigner sử dụng một QMainWindow cung cấp cho bạn một thanh trình đơn và một thanh trạng thái. Khi bạn tự viết mã và sử dụng QMainWindow, bạn không có thứ này. Hoặc bạn nói rằng bạn có thể làm một cái gì đó như window.addToolBar ("Thanh công cụ"); và nó sẽ đặt nó ở một nơi được xác định trước mà không có bất kỳ đau đầu nào khác? –
@MoraruLilian: Tôi không thực sự sử dụng QMainWindow, vì vậy tôi không biết cụ thể. Như tôi đã nói trong câu trả lời của tôi, tôi biết nó có chỗ cho họ, do đó, làm nó trong mã có thể đơn giản như bạn nhà nước. –
@Caleb_Huitt Nó làm những gì tôi đang nói. Tôi muốn chỉ rõ ràng nếu đó là những gì bạn đang cố gắng để nói. Dù sao, tôi sẽ khuyên bạn nên luôn luôn sử dụng QWidget thay vì QMainWindow. Bạn có thể gặp vấn đề, ví dụ với thiết lập Layout khác. Nếu bạn muốn thiết lập một bố cục mới trong QMainWindow, bạn sẽ phải tạo một QWidget và đặt nó làm widget trung tâm cho QMainWin và ngay sau đó trong QWidget bạn có thể setLayout (QLayout *). Trong khi bạn có thể tránh đau đầu thêm chỉ bằng cách sử dụng QWidget. Chắc chắn, QMainWindow cung cấp thiết lập dễ dàng của ToolBar và StatusBar nhưng bạn có thể tự làm điều đó trong QWidget ... –