Hallo,
ich habe ein Qwidget mit fester größe (setFixedSize()) welches ich einem QSrcollview mit addChild() zuweise. Verändere ich nun die Größe des QScrollviews, so wird der Inhalt des QScrollviews (also das QWidget) verzerrt dargestellt. Es wird quasi in das QWidget "reingezoomt" ohne dass ich das will. Dabei wird der Inhalt des QWidgets grobpixelig interpoliert.
Vielen Dank für jede Hilfe!
Konstantin
content von qscrollview ändert sich beim vergrößern/verklein
-
geistgesicht
- Beiträge: 3
- Registriert: 25. Februar 2005 16:14
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
geistgesicht
- Beiträge: 3
- Registriert: 25. Februar 2005 16:14
Ich habe hier mal die wichtigsten Elemente des Codes zusammengestellt, bin für jede Hilfe sehr dankbar!
Ich zeichne in der paintEvent Funktion mit dem QPainter etwas auf das ConnectWidget und das wird alles korrekt angezeigt. Verändere ich aber die Größe des QScrollViews (ich mache das Fenster kleiner), dann wird der Inhalt grob-pixelig vergrößert dargestellt:
m_widget = new ConnectWidget(0,0,m_app);
m_widget->setGeometry(...);
m_sv = new QScrollView(...);
m_sv->addChild(m_widget);
m_sv->show();
m_widget->show();
m_widget->setData(...);
m_app->processEvents();
.
.
.
void ConnectWidget::paintEvent( QPaintEvent *event )
{
QPainter paint( &m_buffer );
paint.setWindow(event->rect());
paint.eraseRect(event->rect());
//dann folgen einige Operationen mit dem painter...
paint.flush();
bitBlt(this, 0, 0, &m_buffer);
}
void ConnectWidget::resizeEvent ( QResizeEvent * event )
{
m_buffer.resize( event->size() );
m_buffer.fill( white );
}
int ConnectWidget::setData(...)
{
.
.
.
update();
}
Vielen Dank nochmals..
Ich zeichne in der paintEvent Funktion mit dem QPainter etwas auf das ConnectWidget und das wird alles korrekt angezeigt. Verändere ich aber die Größe des QScrollViews (ich mache das Fenster kleiner), dann wird der Inhalt grob-pixelig vergrößert dargestellt:
m_widget = new ConnectWidget(0,0,m_app);
m_widget->setGeometry(...);
m_sv = new QScrollView(...);
m_sv->addChild(m_widget);
m_sv->show();
m_widget->show();
m_widget->setData(...);
m_app->processEvents();
.
.
.
void ConnectWidget::paintEvent( QPaintEvent *event )
{
QPainter paint( &m_buffer );
paint.setWindow(event->rect());
paint.eraseRect(event->rect());
//dann folgen einige Operationen mit dem painter...
paint.flush();
bitBlt(this, 0, 0, &m_buffer);
}
void ConnectWidget::resizeEvent ( QResizeEvent * event )
{
m_buffer.resize( event->size() );
m_buffer.fill( white );
}
int ConnectWidget::setData(...)
{
.
.
.
update();
}
Vielen Dank nochmals..
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Das ist wie ich annehme alles in einem Widget, oder? Also, was mir auf einen ersten kurzen Blick augefallen ist, dass du 0 als parent Widget übergibst. Da sollte this drin stehen, wenn mich nicht alles täuscht und damit sollte das Problem gelöst sein. Denn das Problem, auch von deiner Beschreibung scheint lediglich ein Layout Problem zu sein.
-
geistgesicht
- Beiträge: 3
- Registriert: 25. Februar 2005 16:14
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten: