2010-07-21 21 views

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.

+0

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? –

+0

@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. –

+5

@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 ... –

Các vấn đề liên quan