Solved QLabel snap to ScrollBar
-
Hi
You could do as in
https://doc.qt.io/qt-5/qtwidgets-widgets-imageviewer-example.html
and use a ScrollArea with the label inside.
However, this is for normal scrolling when the image is bigger than area where its
displayed.
It sounds a bit like you have some other sort of zoom in mind ? -
Thanks.
I included ImageViewer in the project. But how to use ImageViewer?
I tried to create a QWidget and change the class to ImageViewer, but got an error. -
Hi
You can just new an instance put where you want it
ImageViewer * MyImg = new ImageViewer(this); -
@mrjj said in QLabel snap to ScrollBar:
ImageViewer * MyImg = new ImageViewer(this);
So I get the error: no matching constructor for initialization of 'ImageViewer'
-
@Mikeeeeee
well its constructor is
ImageViewer();
so it doesn't take a parent. you change that so it can be imbedded into what you like. -
How to set picture? Need a method to move from private to public?
-
@Mikeeeeee
hi
yes you can make setImage public -
I did so:
QImage mapImage(":/Images/Images/mapMain.png"); ImageViewer* myImageViewer = new ImageViewer(); myImageViewer->setImage(mapImage);
I have a label: ui->labelMap
How do I set to myImageViewer to ui->labelMap? -
@Mikeeeeee
You cannot put whole viewer into a Label.
However, you can use myImageViewer instead of
ui->labelMap -
But how to use? How to do this?
-
@Mikeeeeee
well do you have ui->labelMap in layout ?
then just insert myImageViewer into that. -
How to do this? I created ui->label Map in the designer.
-
@Mikeeeeee
but is it a layout? -
I appent ui->label in the ui->gridLayout_2
-
Also I have an empty ui->verticalLayout
-
@Mikeeeeee said in QLabel snap to ScrollBar:
ui->gridLayout_2
ok then do
ui->gridLayout_2->addWidget(myImageViewer);
You can delete the label if u wish. -
Cool, works. And how to reconfigure the mouse wheel to zoom in?
-
@Mikeeeeee
Its not a configure option. Its new code :)
You can override (add) wheelEvent ( QWheelEvent * event ) to the
ImageViewer class and change the size of the inner QLabel *imageLabel;
to create a zoom in effect.
Or create your on drawing function like here
https://stackoverflow.com/questions/6650219/zooming-function-on-a-qwidget -
I tried to do so, but it does not work. Please tell me how to set up the signal?
connect(imageLabel, &QWidget:: wheelEvent(), this, &ImageViewer::zoomIn);
-
@Mikeeeeee
Hi
Its not a signal but a virtual function.
You have to override it.Right clik on the class name
Then select
and you get the functionprotected: virtual void wheelEvent(QWheelEvent *event) override { }
Then do same right click again and select
to move the body of function to the cpp file.
Now you can try to implement your zoom.