3

C++ と GTK3 でアプリケーションを開発していますが、行き詰っています。3 つの列があり、そのうちの 1 つ、中央の列が DrawingArea である空き地を使用してビジュアル アプリケーションを作成しました。その DrawingArea では、ボタンを押した後に必要なポイントにいくつかの円を描画し、その円にさまざまなマウス イベント (ドラッグ アンド ドロップ、ダブルクリック、右クリックなど) を設定したいと考えています。公式ドキュメントに従って最初のもの(ボタンを押した後に円を描く)を作成しましたが、問題はマウスイベントの実行方法がわからないことですが、考えてみたところ、いくつかの異なる解決策があります(それらが最善の解決策なのか、それとももっと良い解決策があるのか​​ わかりません):

  1. 最善の方法は cairomm コンテキストへのシグナルを作成することだと思いますが、それを行うものは何も見当たりませんでした。たぶん、カイロの表面などを作成する方法でしょう。

  2. クリックして円を作成するたびに、マウス イベントを処理できる gtk ウィジェットを作成する必要があります。ここでの問題は、ウィジェットが円形で描画可能である必要があることです。円形の DrawingArea を作成することはできますか? それは最高かもしれません。ここでカスタム ウィジェットを作成する方法を見ました。

  3. goocanvasmm を使用します。ここでの問題は、goocanvasmm のドキュメントが少ないことです (私の評判のために 2 つ以上のリンクを投稿できないことを残念に思います)。これは最善の解決策ではないと思います。

このアプリケーションは GTK2 を使用して C で作成され、円は gnomecanvas を使用して描画され、各円に簡単な方法で信号を追加しました。そして今、このアプリケーションを C++ と GTK3 に移行して更新しています。

私は GTK (および一般的なグラフィカル インターフェイス) に非常に慣れていませんが、解決策を何時間も探しましたが、仕事を続けるための最善の方法がわかりません。

ご協力ありがとうございました :)

4

1 に答える 1