Hi,Originally Posted by zlatko
Okay.. This means that i will have to also inherit the class QCanvasView 'coz it contains the method contentsMousePressEvents(QMouseEvent *)...
Is it so?????
Hi,Originally Posted by zlatko
Okay.. This means that i will have to also inherit the class QCanvasView 'coz it contains the method contentsMousePressEvents(QMouseEvent *)...
Is it so?????
no, you just dont capture mouse events on a main window.
If you want to capture them in your canvas, make a class that extends QCanvas and override its mouse events.
Hi,Originally Posted by incubator
It means that i would make another class and its structure would look like this..
[HTML]
#include "imagezoomer.h"
class Sample : public QCanvas
{
public:
Sample();
protected:
void contentsMousePressEvent(QMouseEvent *);
private:
ImageZoomer *zoom;
};
Sample::Sample()
{
ImageZoomer zoom = new ImageZoomer;
}
void Sample::contentsMousePressEvent(QMouseEvent *event)
{
code
}
[/HTML]
Is it so??????????????
sort of, but your ImageZoomer extends a main window, so that class should have a private member MyCanvas that extends a QCanvas (if you use Qt4 its Q3Canvas I think)
and in that MyCanvas class you override your mouse events.
Hi...
The new class which i have created is CanvasMouse..
Now in my ImageZoomer i have created a CanvasMouse *canmouse variable which would call the CanvasMouse which inherits the Q3CanvasView....
In imageZoomer i have created a Q3CanvasView and have passed in the constructor of the CanvasMouse which reads this
CanvasMouse(Q3CanvasView *canview): canvasview(canview)
Now class CanvasMouse contains all the canvas related functionalities...
is this approach correct ?????
You sholdn't give Q3CanvasView parametr. You need give only pointer on parent class.Originally Posted by Kapil
Qt Code:
CanvasMouse *canmous = new CanvasMouse(this); ***** CanvasMouse(ImageZoomer*p): canvasview(p) { }To copy to clipboard, switch view to plain text mode
p.s. also you could give any parametres (if you dont need it in future )
a life without programming is like an empty bottle![]()
Hi..Originally Posted by zlatko
won't this result in a circular dependency... i have included the header file "canmouse.h" in my ImageZoomer class and created an object of it.. Now when i pass the ImageZoomer object to CanMouse class, it would i suppose result into a circular dependency...
Isn't it so?????
yes, there is no need to pass the imagezoomer to your canvas, no need at all...
just have the canvas as member of imagezoomer and add this to one of your layouts
Hi...Originally Posted by incubator
i have done something similar but getting error
"Undefined reference to VTABLE" error.. I know this is inheritance problem but am not able to understand where i have gone wrong..
i have created a main.cpp where i create MainWindow object and pass it to ImageZoomer.cpp...
Now in ImageZoomer.cpp i have created CanvasMouse object and passed it the frame where i have to set the Canvas...
CanvasMouse derives the base class Q3CanvasView and in the constructor i have intialized the Q3CanvasView to frame.. The statement is:
CanvasMouse::CanvasMouse(QFrame *frame): Q3CanvasView(frame){}
But it is creating error.. what can be the possible reason behind it...
Hi..
Done....
Thanks a lot everyone for all the suggestions provided....
Kapil
Bookmarks