Seite 1 von 1

[qt4.1] Scrollen und mehrere QTextEdit

Verfasst: 9. März 2006 01:13
von Esleborn
hi,
ich hab ein MainWidget in dem mehrere SubWidgets untereinander stehen. Jedes dieser SubWidgets besteht aus einem QTextEdit und meheren (unterschiedlich viele) links und rechts angeordneten Buttons, Icons.
Ich will jetzt schlicht und ergreifend, dass jeder der Texte voll und ohne Scrollbar angezeigt werden, falls nicht genug "gesamt-Fläche" verfügbar ist, soll das gesamte Widget scrollbar sein.
Jetzt kommt das Problem: wenn ich einfach eine QScrollArea auf das MainWidget erstelle, werden die Texte mit zuviel Platz ausgestattet (siehe bild1.jpg), führe ich dagegen

Code: Alles auswählen

setWidgetResizable ( true );
aus erhalte ich den Fall, das alle einzelnen Texte Scrollbars erhalten, das gesamt Widget aber quasi nicht scrollbar ist...(siehe bild2.jpg)
Kann mir da einer weiterhelfen?

Elgrimm Esleborn

Verfasst: 9. März 2006 02:41
von Esleborn
ok, hab eine etwas ähmn erschlagende Lösung gefunden....

Code: Alles auswählen

/* .h */
class W_Text_NoScroll : public QTextEdit
{
public:
   W_Text_NoScroll ( QWidget *parent );
   void setHtml ( const QString &f_text );

protected:
   virtual void resizeEvent ( QResizeEvent * fp_event );
};



/* .cpp */
W_Text_NoScroll::W_Text_NoScroll ( QWidget *parent )
/* <-- */   : QTextEdit ( parent )
{
}

void W_Text_NoScroll::setHtml ( const QString &f_text )
{
   W_Text::setHtml ( f_text );

   if ( viewport ( )->width ( ) > minimumWidth ( ) )
      setMinimumHeight ( viewport ( )->width ( ) );
   if ( viewport ( )->height ( ) > minimumHeight ( ) )
      setMinimumHeight ( viewport ( )->height ( ) );
}

void W_Text_NoScroll::resizeEvent ( QResizeEvent * fp_event )
{
   W_Text::resizeEvent ( fp_event );

   if ( viewport ( )->width ( ) > minimumWidth ( ) )
      setMinimumHeight ( viewport ( )->width ( ) );
   if ( viewport ( )->height ( ) > minimumHeight ( ) )
      setMinimumHeight ( viewport ( )->height ( ) );
}
Klar man muss, wenn man mehr als die setHtml Funktion braucht die auch überladen, aber es tut... könnte mir wohl einer eine Methode, die weniger ... ähm ... "brechstangenartig" ist, sagen?

Elgrimm Esleborn