2010-11-27 9 views
3

私は現在、呼び出されたときに与えられたパラメータに従ってx、yグラフを作成するクラスに取り組んでいますが、カーソルが上にくるとx、yグラフの各ポイントの説明も必要です。カーソルを追跡中C++

たとえば、市場の成長(年、金額、レート)を表示するグラフを生成し、特定のポイントにカーソルを合わせると、小さなボックスが表示され、年のようなそのポイントについての詳細が表示されます、株価、株価、グラフ内のポジションなど。私はすでにグラフジェネレータを完成させましたが、今ではこの部分について助けが必要です。

これをC++でどのように実現できますか?

注 - 私はUbuntuを使用しています。

もう1つの注釈---グラフィカルライブラリなしでグラフを作成しました。最初に私の質問を理解できなかった場合、私は基本的に2つのことを尋ねています。1.非グラフィックグラフにカーソルを外部の図形ライブラリで実装するにはどうしたらいいですか?2.できない場合は、グラフを作成し、カーソルトラッキングにどのように使用すればよいですか?

ご迷惑をおかけして申し訳ありませんが、私は初めてグラフィックスを使用しています。私は「外部ライブラリなし」のプログラマーの多くです。

ありがとうございました。

+0

グラフィックス用に使用しているライブラリを知ることは役に立ちます。 – thekidder

+0

どのツールキットを使用していますか? gtkmm? Qt? Plain Xlib(* shudder *)?何か完全に? –

+0

私のグラフはグラフィカルではありません。私はこれが二重の質問であることを私の質問に追加するのを忘れていました。 1つは、グラフィカルライブラリでグラフを作成せずにカーソルをトラッキングすることができます。また、トラッキングにグラフィカルライブラリを使用することもできます(2)グラフを作成するのに適したグラフィカルライブラリと、カーソル。質問を編集しました。ありがとう。 – Lockhead

答えて

2

Qtに基づいたQwtと呼ばれるサードパーティのライブラリがあるのでQtを選ぶでしょう。これは、プロットを含む多くのテクニカルウィジェットを提供します(QtcentreのQtにも興味があります)。

"txt-box on hover"エフェクトは実際には非常に簡単ですが、ノードウィジェットのツールチップをQWidget::setToolTip(const QString&)に設定するだけで済みます。

+0

ありがとうございます。 – Lockhead

1

グラフ内のオブジェクトのリストを維持し、カーソルが上に乗る座標ごとに "ヒットテスト"を行う必要があります。このヒットテストでは、基本的に、現在の座標がその要素のグラフ上のオブジェクトに当たっているかどうかを確認するために、リストを反復する必要があります。

+0

明らかにこれは私がしなければならないことです。ここでは考えません。私の問題はそれをどうやって行うかです。 – Lockhead

+1

さて、あなたのオブジェクトをプロットすると、特定の既知の場所と特定のゼロ以外のサイズを持ちます。あなたがする必要があるのは、それらを現在の座標と相関させることだけです。例えば、オブジェクトが(14,24)で半径5の円である場合、 'sqrt((14-x)** 2 +(24-y)** 2)'が以下より小さいかどうかを確認する必要があります。そうであれば情報を表示します。 –

+0

非常に役に立ちました、ありがとう。私は間違いなく外部ライブラリを含む以上のソリューションを選択します。しかし、私はカーソル位置を取得するために知っている唯一の方法は、Windows(GetCursorPos)上でのみ動作し、私はUbuntuで作業しています。どのようにLinux上でカーソル位置を取得する上での任意の考えですか? – Lockhead

-1

コンソールからグラフを作成している場合は、マウスがどこにあるかをそのコンソールが知っているとは思えません。 Javaのような言語で見られる多くのグラフィカル関数は、C++には存在しません。なぜならC++の作成者は、これらのグラフィカルライブラリをポータブルではなく強力にしたいからです。私はQTの勧告をもう一度、私は個人的にそれを使用したことはありません。それは私が他の場所で最もよく見た図書館です。