[qt4.1] Scrollen und mehrere QTextEdit

Alles rund um die Programmierung mit Qt
Antworten
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

[qt4.1] Scrollen und mehrere QTextEdit

Beitrag 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
Dateianhänge
ohne setWidgetResizable ( true );
<br />&quot;begleitende&quot; Icons etc sind entfernt
ohne setWidgetResizable ( true );
"begleitende" Icons etc sind entfernt
bild1.jpg (112.16 KiB) 1654 mal betrachtet
setWidgetResizable ( true );
<br />&quot;begleitende&quot; Icons etc sind entfernt
setWidgetResizable ( true );
"begleitende" Icons etc sind entfernt
bild2.jpg (141.54 KiB) 1654 mal betrachtet
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Antworten