Custom widget in QScrollArea
-
Hi,
i create a widget in a QScrollArea that should fill the entire widget with red color, but when i scroll to the right, i see that it's not filled completely. The frame is drawn correctly. Here is my code:
#include <QMainWindow> #include <QPainter> #include <QScrollArea> class MyWidget : public QWidget { public: virtual void paintEvent(QPaintEvent* e) { QPainter painter(this); painter.fillRect(geometry(), Qt::red); } }; class ScrollTest : public QMainWindow { Q_OBJECT public: ScrollTest(QWidget *parent = 0) : QMainWindow(parent) { setGeometry(QRect(100,100,230,230)); MyWidget* widget = new MyWidget; widget->setGeometry(QRect(0,0, 250, 250)); widget->setStyleSheet("border: 3px solid blue;"); QScrollArea* area = new QScrollArea(this); area->setGeometry(QRect(0,0, 200, 200)); area->setWidget(widget); } };
Here is a Screenshot: image
What's wrong?
Edit raven-worx: added code tags
-
did you try QScrollArea::setWidgetResizable(true)?
But the question is what you want to achieve, because actually a scrollarea's purpose is to show scrollbars if needed.
If setWidgetResizable() doesn't do what you want you need to subclass QScrollArea and reimplement it's resizeEvent() handler and resize the widget manually.
-
This is just a simple test dialog that shows my problem. The real widget is an image viewer/editor. I tried QLabel to draw the image, but this is very slow when you zoom in with large images. What i want to do is to zoom and scroll through the image.
If i call setWidgetResizable(true) i don't see the scrollbars and only a portion of the widget.