- 412 名前:403 mailto:sage [2009/10/28(水) 22:30:47 ]
- >407
MainWindowとImageViewはフォームエディタで作成 MainWindow上にQGraphicsViewを格上げ QGraphicsSceneを派生したPixmapSceneを自作 PixmapSceneはMainWindowにメンバ変数としてインスタンス生成 PixmapSceneを派生する際、QGraphicsSceneがご指摘のとおり、 QObjectを引数とするコンストラクタしかなかったため、PixmapSceneの イベントハンドラからMainWindowのメンバ関数へどうやってアクセスしたら 良いのだろうと悩みました。 繰り返しになりますが、PixmapSceneのインスタンス生成は、MainWindowの メンバ変数としておりますが、この際、 PixmapScene::PixmaScene(QObject* parent) : QGraphicsScene(parent){} とコンストラクタを定義して、 MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow),m_pixmapscene(this) { ... } PixmapSceneにMainWindowのポインタを渡しておき、PixmapScene::mousePressEventQGraphicsSceneMouseEvent* mouseEvent) { MainWindow* mainwindow = qobject_cast<MainWindow*>(parent()); qDebug() << mainwindow; if (mainwindow != 0) { mainwindow->setPointToStatusBar(mouseEvent->scenePos().x(), mouseEvent->scenePos().y()); } } MainWindowのメンバ関数にアクセスすることができました。 どうもありがとうございました。 (長々と説明が下手ですいません。) >>286のように、グローバルなアプリのポインタ使った方がスマートかなと思ったり。。。
|

|