私はC言語を使用してGlade3インターフェースに取り組んでいます。
これまでのところ、ユーザーがファイルを保存する場所を選択する場所が2つあります。参照ボタンをクリックすると開くGtkFileChooserDialogがあります。そのダイアログで[保存]をクリックすると、[参照]ボタンの横にあったGtkEntryがいっぱいになります。
最初にファイルを選択したときは機能しますが、2回目gtk_file_chooser_get_filename()
は、ダイアログに何かを入力しても何も返されません。
ソースコードの簡略版を次に示しますが、まだ問題があります:http: //paste.ubuntu.com/1032567/およびそれに対応するGlade3インターフェイスファイル:http: //paste.ubuntu.com/1032572/
このような設定でUIに2つの場所があります。それらの両方で起こります。私には2つの異なるコールバック関数があります。1つはそれを正しく行うための古い試みであり、もう1つは私の最新の試みです。どちらも機能しませんが、新しいものは、返されるものがnullであるかどうかを確認するため、segfaultingを回避します。
新しいコールバックはon_button5_clicked()
古いものon_button3_clicked
です。
参照を確認しましたが、ファイル名を選択しているのにnullポインターが返される理由については何もわかりませんでした。
どんな助けでも大歓迎です。(私はヘッドバンギングの段階にいるような気がします)。
編集:それで、私は試すべきことについてさらにいくつかのアイデアを持っていました。まず、ダイアログを表示する代わりに、FileChooserウィジェットを使用して独自のウィンドウを作成してみました。これは、gtk_Dialog_Run呼び出しでダイアログが実行されないという問題が発生していないことを確認するために行いました。また、ファイル名文字列へのポインタがnullでないかどうかを確認するコードを繰り返してみました。同じコールバック呼び出しで2回実行されると、null以外の文字列ポインタが返されます。また、ダイアログが起動されるウィンドウ(実際には、gtk_widget_show()ED)自体がダイアログであるという事実とは関係がないことを確認するためにこれを行いました。
ダイアログのボタンをgtk.RESPONSE_OKまたはgtk_RESPONSE_CANCEL応答を持つように設定する必要があるという私の理論を試しました。それは何の効果もなかったようです。