Wie man die QLayouts zu erweitern, richtig?

Meine Struktur ist wie folgt:

QWidget 
-QHBoxLayout 
-QLabel 
-QVBoxLayout 
-QLabel 
-QWebView 

Möchte ich die HBoxLayout füllen Sie die Breite so groß die Behälter sein kann, aber gehen nicht mehr oder weniger. Allerdings möchte ich die QVBoxLayout zu erweitern, um die Größe der Inhalte in der vertikalen Richtung.

+-------------+------------------------------+ 
| FixedTitle: | Ausweitung auf Breite Titel + 
| |------------------------------+ 
| | + 
| | dies ist ein test, wraps bis+ 
| | die nächste Zeile + 
| | + 
| | + 
| | + 
| | bla bla bla + 
| | + 
| | + 
| | + 
| | es gibt keine vertikale scroll + 
| | bars hier + 
+-------------+------------------------------+ 

In diesem Beispiel, FixedTitle Breite ist der aber groß muss es sein, aber nicht die Größe immer. Ausbau, um die Breite der Titel füllt die verbleibenden horizontalen Platz.

Bisher habe ich:


this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
QHBoxLayout *layout = new QHBoxLayout;
this->setLayout(layout);

layout->addWidget(new QLabel(QString("FixedTitle")), 0, Qt::AlignTop);

QVBoxLayout *v_layout = new QVBoxLayout;
v_layout->setSizeConstraint(QLayout::SetNoConstraint);
layout->addLayout(v_layout);

v_layout ->addWidget(new QLabel(QString("Expanding to Width Title")), 1, Qt::AlignTop | Qt::AlignLeft);

QWebView *view = new QWebView();

QTextEdit text;
text.setPlainText(QSString("\nthis is a test which wraps to the next line\n\n\nbla bla bla\n\n\nthere are no vertical scroll bars here"));
view->setHtml(text.toHtml());

int width = view->page()->mainFrame()->contentsSize().width();
int height = view->page()->mainFrame()->contentsSize().height();
view->page()->setViewportSize(QSize(width, height));
view->resize(width, height);
view->setFixedSize(width, height);

v_layout->addWidget(view);

Gibt es zwei Probleme: 1. Es ignoriert die Breite des Containers und 2. Es immer noch nicht erhalten die Höhe der QWebView richtig.

Wie kann ich dieses Problem beheben?

  • Erklären Sie Ihren Dimensionierung Ziel ein wenig klarer? Erste, was sizing wollen Sie passieren zwischen dem label und dem layout in der ersten horizontalen layout? Zweitens, welche Beziehung der Dimensionierung möchten Sie zwischen dem Etikett (textedit?) und webview in das vertikale layout? Sie werden versuchen, die webview niemals horizontale Scrollbalken?
  • Ich fügte hinzu, ein wenig Bild, hilft das?
  • Ja danke. Auch was ist der deal mit der QTextEdit. Sie erwähnt zwei QLabels.
  • Ich aktualisiert, das mit dem Bild besser. Die QTextEdit gibt es nur text zu konvertieren in eine html-Seite.
  • Letzte Frage. Zwischen den QTextEdit und die QWebView, wie Sie Sie haben wollen, sowohl auf die Größe bezogen auf den Inhalt? Ich bin klar auf die anderen Komponenten jetzt. Aber Wann sollte vertikalen Balken sichtbar?
  • Die QTextEdit ist nie zum Layout Hinzugefügt, es ist einfach zu konvertieren Sie die Zeichenfolge in html. Die QWebView sollte nie Anzeige vertikaler scroll-Balken, so sollte das widget erweitern, um Platz für seine Größe. Ist das klar?

InformationsquelleAutor chacham15 | 2012-08-31
Schreibe einen Kommentar