問題タブ [gtkmm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gtk - gtkmm ポップアップ リストからシグナルが 2 回発生する
GTK+ を使用してからしばらく経ちましたが、最後に使用したのは C で、現在のように gtkmm と C++ は使用していません。とにかく、私は解決するのが簡単な問題だと思うものを持っています:
ラジオ ボタンのリストで構成されるポップアップ メニューがあり、そのうちの 1 つをクリックすると何らかのアクションが発生するようにしたいと考えています。コードは次のようになります。
私が見る唯一の問題はMyClass::on_item_activated
、以前に選択されていないラジオボタンがメニューから選択されたときに2回呼び出されることです。すでに選択されているラジオボタンがクリックされたときに一度だけ呼び出されます。
最初の発火は「何かがアクティブではなくなった」ということで、2 回目は新しいラジオ ボタンのアクティブ化のためだと思います。私が正しいか間違っているかにかかわらず、質問は同じです。クリックごとに 1 回だけハンドラーにアクションを実行させるにはどうすればよいでしょうか? ハンドラーを一度だけ呼び出す必要があるか、コールバックが「重複」しているかどうかを確認するために内部からチェックするものが必要です。
windows - Windows での依存関係のあるアプリケーションのパッケージ化
Linux で gtkmm と libpcap を使用してアプリケーションを作成しました。もちろん、gtkmm は GTK+ に依存しています。
これを Windows に移植して配布しようとした後、依存関係が多すぎてインストールできないというフィードバックが寄せられました。
ユーザーは、私の小さなアプリケーションを実行する前に、GTK+、gtkmm、および winpcap ランタイムのインストーラーを実行する必要がありますが、これは確かに面倒です。
Windows 用の GIMP は、必要に応じて GTK+ インストーラーを起動するインストーラーを使用しているようですが、3 つの異なるライブラリに対してそれを行うのは、特にインストーラーのサイズの点で少し過剰に思えます。
これを配布するより良い方法はありますか?winpcap は実際にサービスをインストールする必要があるため、おそらくインストーラーを実行する必要があると思いますが、ランタイム フォルダーに GTK+/gtkmm ライブラリをバンドルできますか?
私は Linux 開発にかなり精通しているので、最善の行動方針が何であるかはわかりません。
c++ - GTK+ または GTKMM を学ぶべきですか?
私は約 2 年前に ubuntu を使い始めた C# プログラマーです。C または C++ で GUI プログラミングを学びたいと思っています。mono はあまり好きではありません。システムでクラッシュする傾向があります。C++ の基本的な理解があります。私は C で作業したことはありませんが、クールに見えます。どのツールキットを学習/使用する必要がありますか? それぞれの長所/短所を与えます。ありがとう!
glib - gtkmm: 他のスレッドから GUI を更新しますか?
私は gtkmm (および glibmm) を使用しており、別のスレッドから GUI を更新したいと考えています。私はの例に従いました
http://www.gtkmm.org/docs/glibmm-2.4/docs/reference/html/thread_2dispatcher_8cc-example.html#_a1
しかし、私は2つの質問があります:
Glib::MainLoop がイベントを受け取る代わりに、Gtk::Main (ウィンドウを実行する) がシグナルを受け取ることは可能ですか?
何らかの方法で .connect() 関数に引数を付けることはできますか? SigCX を使用して可能であることは知っていますが、構文が少し厄介だと思いました。
ありがとう!
gtk - gtktreeview ヘッダーの高さを取得するには?
gtk ソース コードを調べたところ、ヘッダーの高さは非公開です。何かを試してみましたが、思い通りに動作しませんでした (heightWithHeader が 1 ?!)
別の解決策やコードの修正を手伝ってもらえますか?
更新:固定数の行を表示するには、ツリービューの高さを調整する必要があります。これを行うには、コンテナー (スクロール ウィンドウ) のサイズを headerHeight + numberRowsToDisplay * heightOfRow に調整します。
c++ - GtkTreeView ソート矢印を削除するには?
列ヘッダーから並べ替え矢印を削除する必要があります。これは、列を呼び出すことで実行できset_sort_indicator(false)
ます。
矢印は表示されていませんが、矢印のスペースはまだ確保されているようです。列のタイトルがすべてのヘッダーを埋めるのに十分な大きさの場合、最後の部分 (矢印があるべき場所) が切り取られます。
タイトルをヘッダー全体に表示する方法はありますか?
gtk - Glib::IOChannel のインスタンスが 2 つある場合、両方が書き込まれるまでブロックされます。これを行う正しい方法は何ですか?
ここにある例を 2 つの io チャネルを使用するように変更しました。両方のチャネルに書き込む前にコールバックが呼び出されないようです。その後、FIFO への書き込み時に個別に呼び出されます。私は何かを忘れていますか?
- 1 つのシェル ウィンドウでテスト プログラムを開始します。
- 2 番目のシェル ウィンドウに echo "abc" > testfifo1 と記述します。→何も起こりません。
- 3 番目のシェル ウィンドウに echo "def" > testfifo2 と記述します。-> "abc" と "def" を取得するようになりました
- fifo の 1 つに書き込みます。これはすぐに提供されます。
編集:以下のゴームリーが示唆しているように、解決策は非ブロックの欠如でした。
以下のコードへのこの変更により、すぐに応答するようになりました。
コード:
user-interface - Gtk の button_press_event が単一の左クリックを受け取らないのはなぜですか?
Gtk::Notebook (gtkmm) にタブ追加ボタンを設定しようとしています。計算された位置にピックスマップを描画することでこれを行っています-これはうまく機能します。ただし、そのイベントを受信しようとすると、左クリックを 1 回も拾うことができません。シングルミドルとシングルライトはプレスイベントとリリースイベントの両方を提供し、ダブルレフトはプレスイベントのみを提供しますが、シングルレフトは何も登録しません。イベントを正しく受信するにはどうすればよいですか?
user-interface - Gtk+ でのウィジェットのスタック
Gtk+ で 1 つのウィジェットを別のウィジェットの上に積み重ねる方法はありますか? GtkFixed を数えませんか? GtkFixed は 2 つの理由でうまく機能しません: 1) Z オーダーが必要であり、2) 提供されたスペースを拡大して埋めるために 1 つのウィジェットが必要です。
user-interface - Gtk+ マウス ポインターのエリア外イベント
マウス ポインターが GtkNotebook の領域を離れたことを検出する必要があります。通常、これは motion_notify イベントで可能ですが、ポインターが十分に速く移動した場合、イベントはトリガーされません。これは GtkNotebook のピクセルの特定の領域であるため、GtkEventBox を使用することはできません。これを行う適切な方法は何ですか?