2017-01-22 5 views
1

라이브러리 gtkmm을 사용하고 있습니다. 내 코드가 거의 완벽하기 때문에 컴파일하고 실행할 수 있다고 생각합니다. 내가가 가지고 이해 내가 그것을 해결하는 방법을 어떻게 gtk_window_set_transient_for()를 사용할 수 있습니까?

Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. 

그래서 나는이 포럼에 대한보고 :하지만 터미널에서 나는 내가이 메시지를 읽을 수 있습니다 gtkmm로 만든 내 소프트웨어에서 열린 파일을 클릭하면 이 방법을 사용하십시오 : gtk_window_set_transient_for().

사실 저는 Gtk :: Window와 Gtk :: FileChooserDialog를 가지고 있습니다. gtk_window_set_transient_for()를 사용하는 예제를 넣을 수 있습니까?

대단히 감사합니다!

+0

"내 코드는 거의 완벽합니다."- 이것은 매우 대담한 표현입니다. –

답변

1

Gtk::FileChooserDialog 및 기타 GTK + 대화는 Gtk::Window에서 파생됩니다. Gtk::Window에는 방법 set_transient_for(Gtk::Window &parent);이 있습니다. 설정하지 않으면 본 메시지가 나타납니다.

이 문제를 해결하려면 set_transient_for(Gtk::Window &)을 사용해야합니다. 참고는 포인터가 아니라 참조를 취합니다. 그래서 당신은 이런 식으로 사용할 것입니다.

{ 
    Gtk::Window first_window; 

    ... 

    Gtk::FileChooserDialog file_dialog("Title"); 

    ... 

    file_dialog.set_transient_for(first_window); 

    ... 
} 

대화 상자의 임시 창을 생성자로 설정할 수도 있습니다. 그렇게.

{ 
    Gtk::Window first_window; 

    ... 

    Gtk::FileChooserDialog file_dialog(first_window, "Title"); 

    ... 
} 

first_window이 포인터 인 경우 이와 같이해야합니다.

file_dialog.set_transient_for(*first_window); 
+0

이것은 완벽합니다! 고맙습니다 ! –