2010-10-26 54 views
18

Tôi có lớp học của riêng mình có trụ sở tại QWidget. Tôi đặt tiện ích này vào QMainWindow và tôi cần nhấp chuột vào tiện ích này.qt QWidget nhấp vào

tôi đã cố gắng:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0))); 

Nhưng không có gì đang xảy ra. Tôi làm nó như thế nào?

Trả lời

26

QWidget không có tín hiệu được nhấp() và QMainWindow không có vị trí thoát(). Không thể kết nối với một tín hiệu không tồn tại và khe không tồn tại. Giá trị trả về của kết nối phải đúng nếu kết nối thành công. Kiểm tra giá trị này khi bạn thực hiện kết nối để đảm bảo rằng mã của bạn sẽ hoạt động chính xác.

Để thoát khỏi ứng dụng, bạn phải gọi qApp->quit()

Ngoài ra, vì nó đã được đề cập bởi những người khác, bạn sẽ phải cài đặt một eventFilter hoặc reimplement các

void QWidget::mousePressEvent (QMouseEvent * event) [virtual protected] 

hoặc

void QWidget::mouseReleaseEvent (QMouseEvent * event) [virtual protected] 

phương pháp.

Có rất nhiều ví dụ trong tài liệu chính thức của Qt, this ví dụ: thực hiện phương pháp mousePressEvent(QMouseEvent *event).

Đối với tùy chọn sự kiệnFilter, xem this ví dụ nhỏ.

Hy vọng điều này sẽ hữu ích.

5

A QWidget không có tín hiệu clicked. Để thực hiện công việc này, hãy sử dụng các sự kiện. Tất cả các vật dụng hỗ trợ sự kiện, vì vậy có một số công việc chân tay để làm, nhưng không nhiều:

  1. Override các event chức năng cho widget của bạn (mà bạn lấy được từ QWidget
  2. Respond to sự kiện của loại QEvent:: MouseButtonPress

Hoặc, thêm phương thức eventFilter

Google các lớp và phương pháp tôi đã đề cập cho mẫu mã và để có được giải pháp hoàn chỉnh tùy thuộc vào chính xác của bạn ds.

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