Setting up the position of QGraphicsView
-
Hello everyone. I am a beginner in Qt. Am developing a GUI on linux platform and am using two QGraphicsView in my GUI. I want to know how to set the position of QGraphicsView. As both the graphics view is being overlapped. I would really appreciate if anyone could help me by providing the information on setting the position of QGraphicsView.
Thanks in advance,
-
Well, you either use "absolute positioning":http://doc.qt.nokia.com/latest/qwidget.html#pos-prop or you use "layouts":http://doc.qt.nokia.com/stable/layout.html.
-
Hi,thanks for your reply.... is their an example code that I code refer to.... as I told you am a beginner it would be really helpful,,
-
the code is as follows:
@
graphicsView= new QGraphicsView;
graphicsView->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
graphicsView->setGeometry(200,200,200,200);
graphivsView->setStyleSheet(....);
@[EDIT: code formatting, Volker]
-
There are tons of examples found "here":http://doc.qt.nokia.com/stable/all-examples.html and "here":http://doc.qt.nokia.com/stable/tutorials.html.
-
I tried using absolute positioning but its the same result. I also tried using layouts but am getting the comment as program has unexpectedly finished. Please see the code,
@
ImageViewer::ImageViewer()
{
horizontalLayout = new QHBoxLayout(widget);
horizontalLayout->setObjectName("horizontalLayout");
horizontalLayout->setContentsMargins(0, 0, 0, 0);graphicsView = new QGraphicsView;//(this); graphicsView->setBackgroundRole(QPalette::Base); graphicsView->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored); graphicsView->setStatusTip(tr("Area to Display the Image")); graphicsView->setGeometry(QRect(10, 40, 256, 192)); graphicsView->setStyleSheet("color: black;" "background-color: gray;" "selection-color: yellow;" "border: 3px solid black;" "border-radius: 40px;");
horizontalLayout->addWidget(graphicsView);
graphicsView1 = new QGraphicsView;//(this);
graphicsView1->setBackgroundRole(QPalette::Base);
graphicsView1->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
graphicsView1->setStatusTip(tr("Area to Display the Image"));
graphicsView1->setGeometry(QRect(300, 40, 256, 192));
graphicsView1->setStyleSheet("color: black;"
"background-color: gray;"
"selection-color: yellow;"
"border: 3px solid black;"
"border-radius: 40px;");
horizontalLayout->addWidget(graphicsView1);scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(graphicsView); scrollArea->setWidget(graphicsView1); scrollArea->setStyleSheet("color:black;"); //horizontalLayout->addWidget(scrollArea); setCentralWidget(scrollArea);
....
@[EDIT: code formatting, Volker]
-
At first please wrap your code around @-tags and format it properly. It is an unreadable mess.
As to your code:
- You are missing a call to the base class constructor (QMainWindow).
- horizontalWidget has widget as its parent, which is neither declared nor initialized.
- QScrollArea can hold just one widget (set... is an indicator that there can be set just one object, add... would be an indicator that there can be set multiple objects).
- By passing graphicsView1 to QScrollArea::setWidget() graphicsView is deleted as it was implicitly reparented to the QScrollArea when set.
Just create horizontalLayout without a parent, set it as layout to an ordinary QWidget instead of a QScrollArea (QGraphicsView already implements QAbstractScrollArea) and set this widget as the central widget.
If there is anything you haven't understood - especially parenting or the layout system - you should have a good read on Qt fundamentals first. If there are any specific questions feel free to come back here.
-
Thanks a lot for your reply.... Yes, now I have modified my code and its working fine, now I can display two GraphicsView windows in the GUI. I have to work out on layouts,, I will definitely comeback if I have any queries. Thanks a ton :)