Seite 1 von 1
content von qscrollview ändert sich beim vergrößern/verklein
Verfasst: 25. Februar 2005 16:26
von geistgesicht
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
Verfasst: 27. Februar 2005 16:50
von FlorianBecker
Hi, kann ich so nix dazu sagen, hast du Code?
Verfasst: 28. Februar 2005 13:07
von geistgesicht
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..
Verfasst: 28. Februar 2005 13:41
von FlorianBecker
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.
Verfasst: 28. Februar 2005 16:26
von geistgesicht
Hallo und vielen Dank erst mal!
Leider erstelle ich den Scrollview nicht innerhalb eines anderen widgets. Ausserdem habe ich eine static Application, der beliebig viele Instanzen des Scrollviews zugewiesen werden sollen d.h. ich kann setMainWidget() nicht verwenden...
Verfasst: 28. Februar 2005 16:34
von FlorianBecker
Naja, dann lös das ohne static, und mache es einfach als instace, damit geht das dann.
DeineKlasse() {
myInstance = this;
}
class DeineKlasse {
public:
static instance() { return myInstance; }
}
Das geht sicher... einfach mal ein wenig rumbasteln.