2011-12-15 36 views
9

Tôi đang cố chụp Nhập khi được bấm trong GtkEntry. Hầu hết các nguồn tài nguyên Tôi đã tìm thấy đề nghị kết nối với tín hiệu activate, nhưng documentation for GtkEntry bang (tôi nhấn mạnh):Cách chụp phím bấm Enter trong GtkEntry

Các ứng dụng không cần kết nối đến nó, nhưng có thể phát ra nó với g_signal_emit_by_name() nếu họ cần để kiểm soát kích hoạt theo chương trình.

Tôi rất tò mò về lý do đằng sau vấn đề này và cũng là điều thay thế được chấp nhận chung. Tôi biết rằng tôi có thể kết nối với tín hiệu key-press-event và kiểm tra mã khóa, nhưng tôi tự hỏi nếu có một giải pháp thanh lịch hơn.

+0

Tôi khá ý thức về những gì các tài liệu đã nói, nhưng tôi đã luôn luôn sử dụng, cho đến nay không có vấn đề gì nảy sinh. Nếu tôi là bạn tôi sẽ sử dụng và tìm hiểu thông qua các thử nghiệm nếu không phải là công việc.Mặc dù bạn có thể kiểm tra mã đằng sau nguồn GtkEntry để xem nó có phù hợp với nhu cầu của bạn hay không. – erick2red

Trả lời

9

Đó là tín hiệu khóa. Điều đó có nghĩa là GTK được thiết lập để khi bạn nhấn Nhập vào mục nhập, tín hiệu sẽ được phát ra. Nó cũng có thể được phát ra theo chương trình nếu bạn muốn mô phỏng cách nhấn Nhập, do đó không đảm bảo rằng tín hiệu thực sự là kết quả của một lần nhấn phím.

Nếu bạn muốn chụp một phím bấm, thì cách tốt nhất là kết nối với key-press-event.

Điều đó nói rằng, tôi không hiểu tại sao bạn không thể sử dụng tín hiệu activate. Hầu hết các tín hiệu keybinding không nên được kết nối, nhưng điều này có vẻ hợp lý. Tôi nghĩ bạn nên yêu cầu làm rõ trên danh sách gửi thư gtk-devel hoặc gửi một lỗi trên bugzilla.gnome.org nói rằng tài liệu cho tín hiệu này phải được làm rõ.

+1

Xong và xong. Cám ơn phản hồi của bạn. https://bugzilla.gnome.org/show_bug.cgi?id=666364 –

2

Các tài liệu GtkEntry đề cập đến cho các tín hiệu kích hoạt:

Các ứng dụng không cần kết nối đến nó, nhưng có thể phát ra nó với g_signal_emit_by_name() nếu họ cần phải kiểm soát hoạt lập trình.

... đã được thay đổi:

Trong khi tín hiệu này được sử dụng như một tín hiệu keybinding, nó cũng là thường được sử dụng bởi các ứng dụng để đánh chặn kích hoạt các mục.

Điều này xảy ra vào 2012-06-11 với cam kết 4a25bac0e7685000fff90a211db6ac60f6b74ab1. Thông điệp cam kết là:

Cập nhật tài liệu cho GtkEntry :: kích hoạt

Tháo 'bạn sẽ không kết nối' nhắn từ tín hiệu này. Trong khi đó là một tín hiệu keybinding, sử dụng nó từ các ứng dụng là tốt và, trên thực tế, dự kiến.

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