私の最初の Gtkmm 3.0 プログラムでは、プログラム構造に問題があり、DrawingArea クラスからクラス データにアクセスできません。
gnome Web サイトのデモ プログラム (「細い線の描画」) に基づいて、window クラス、drawingArea クラス、およびユーザー データを含む Board クラスがあります。
drawingArea オブジェクトは、windows クラスのメンバ変数として定義されています。ウィンドウ クラス コンストラクターで、Board オブジェクトをインスタンス化します。
ここで、drawingArea クラスの on_draw ルーチンで Board メンバー変数にアクセスしたいと考えています。これを行う最善の方法は何ですか?
私のボードクラスは次のとおりです。
class Board {
public:
int sqPix;
私のウィンドウクラスは次のとおりです。
Board &ExampleWindow::getBd() { return bdw; }
void ExampleWindow::setBd(Board b) {bdw = b; }
ExampleWindow::ExampleWindow(char * fn, vector<int>& t)
{
Board bd = Board(t);
setBd(bd);
私のウィンドウ クラス .h ファイルには次のものがあります。
class ExampleWindow : public Gtk::Window
{
public:
ExampleWindow();
ExampleWindow(char * fn, std::vector<int>& t);
virtual ~ExampleWindow();
Board &getBd();
void setBd(Board b);
private:
Board bdw;
MyArea m_Area;
私の描画領域クラスでは、次のようなことをしたいと思っています:
bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
Gtk::Allocation allocation = get_allocation();
=====> int sqPix = ExampleWindow::getBd().sqPix;