2010-09-06 81 views
0

我有一個包含繪圖區的對話框。如果對話被放大或縮小或掩埋並暴露出來,我想重繪繪圖區域的內容,這與正常和自然的繪圖區域一樣。爲此,我創建了一個方法繪圖區和暴露事件

bool on_expose_event (GdkEventExpose *event); 

在類中。但是,此事件的存在會阻止對話框上的所有其他小部件被正確繪製;據推測,它們在暴露時也會被調用。如何創建一個函數來刷新繪圖區域,並讓所有其他小部件自己照顧自己?

+0

此方法是繪圖區域還是對話框的成員? – Beta 2010-09-06 16:14:24

+0

它是對話的一部分。我可以看到如何將函數的調用附加到特定小部件的信號,但不公開事件。 – 2010-09-06 16:18:50

+0

「bool on_expose_event(GdkEventExpose * event);」你不是指GtkEventExpose嗎? – 2010-09-06 16:55:37

回答

1

你應該真的子類Gtk :: DrawingArea類,並實現該類的on_expose_event()函數。

+0

我希望避免有兩個類,因爲它們之間的耦合將會不合需要地大。但如果這是我必須擁有的,那麼這就是我必須擁有的。 – 2010-09-06 17:12:44

+1

好吧,你不需要*繪製區域的子類,它通常只是更清潔的解決方案。如果你真的想不做子類化,只需要實現一個與對話框的虛函數名稱不同的函數(將其稱爲例如expose_drawing_area()而不是on_expose_event()),然後將其連接到drawingarea.signal_expose_event() – jonner 2010-09-07 14:41:22

+0

謝謝,喬納;我一定會試一試。 – 2010-09-07 15:51:31