Anchor layout QGraphicsView



  • Hi there,

    In my application I have a QGraphicsScene with lots of objects inside a QGraphicsView object that sits over a QMainWindow.
    How can I make that QGraphicsView to be anchored inside the QMainWindow, so I can move it around with the mouse?

    Thanks in advance.



  • Sounds like you either want to set the QGraphicsView as the centralWidget of your QMainWindow, or use a QMdiArea as centralWidget and add your QGraphicsView as a subWindow of your QMdiArea.



  • At the moment the centralWidget inside the QMainWindow is parent of the QGraphicsView.
    I only want to be able to move the QGraphicsView around with the mouse click/movement. Is that possible?

    My QGraphicsView is a single sheet of work like a MS Word sheet.



  • Not sure I understand exactly what you want to accomplish, but if you want to be able to move and resize the QGraphicsView freely inside the QMainWindow, you have to use a QMdiArea.
    But if you only have one QGraphicsView, I don't really understand why you would want to do that.



  • [quote author="ludde" date="1334055637"]Not sure I understand exactly what you want to accomplish, but if you want to be able to move and resize the QGraphicsView freely inside the QMainWindow, you have to use a QMdiArea.
    But if you only have one QGraphicsView, I don't really understand why you would want to do that.[/quote]

    It's mostly a matter of style. Do you know the application Sibelius or even MuseScore? I want to make a graphicsview containing a musical score just like the one in that apps.



  • Haven't seen those applications, but it seems like a cool project. But, as I said, if you want a movable window within another window, use a QMdiArea.



  • Ok, I'll give it a try. Thank you very much. :)



  • Ok, it works the way I expected except for one issue: the mousepressevents that were being handled correctly are not anymore. I cannot select items anymore inside my graphicsview. Also I can only move around the subwindow containing the graphicsview if I click (with the mouse) outside of it (e.g. over the mdiarea). Seems that subwindow mouseevents are not being caught.

    Edit:
    Actually, the events that aren't being caught are the left click of the mouse and the mousemoveevent. Right clicks are caught... Bug?



  • Strange, I cannot see how using a QMdiArea would affect that, but it's too long ago since I used one myself to remember if there was something special you had to do to make mouse press events work as usual. Maybe you should start a new thread with a more specific question about that, and see if someone else can help you out.



  • Update:
    I installed a eventFilter in the class in order to try to solve these issues.

    When I installed the filter with qApp->installEventFilter(this) the mouseevents worked properly inside the subwindow. Installing the filter over the class I am working in, I have the exact same issues as before... My app has a QMainWindow that is the main interface of the overall program, clicking a button another QMainWindow is invoked, which is the interface of the class I'm working in. So using qApp->installEventFilter(this), solves me these problems but gives me stack overflows when I click with the mouse and move it around in the rest of the app.

    Any idea of how to solve this?



  • I just moved to this "thread":http://qt-project.org/forums/viewthread/16310/.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.