Qt4: intiale Breite von QDockWidget
Qt4: intiale Breite von QDockWidget
Ich moechte gerne beim intialiseren und hinzufuegen eines QDockWidget zu einem QMainWindow die Breite definieren.
Beispiel waere das die Breite des QDockWidget 100pixel betraegt und der Rest vom centralWidget in Anspruch genommen wird.
Wichtig ist aber das der User danach die Breite des QDockWidget mit dem Slider aendern kann.
Hat jemand eine Idee wie man dies in Qt4 machen kann?
Beispiel waere das die Breite des QDockWidget 100pixel betraegt und der Rest vom centralWidget in Anspruch genommen wird.
Wichtig ist aber das der User danach die Breite des QDockWidget mit dem Slider aendern kann.
Hat jemand eine Idee wie man dies in Qt4 machen kann?
ja, aendert aber gar nichts!upsala hat geschrieben:resize schon mal ausprobiert?
Anbei mein Beispiel als Code:
Code: Alles auswählen
QDockWidget *dockWindowMailboxes = new QDockWidget(tr("Mailboxes"), this);
dockWindowMailboxes->resize(100,100);
dockWindowMailboxes->setAllowedAreas(Qt::LeftDockWidgetArea);
addDockWidget(Qt::LeftDockWidgetArea, dockWindowMailboxes);-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
.. also nach dem was ich gesehen (und bis zum Abwinken ausprobiert) habe, funktioniert das direkte Setzen der Breite des DockWidget mit Methoden des DockWidget (oder des MainWidget ) nicht. Man kann nur feste minimal und maximalwerte eingeben ... setMinimumWidth(..) ...setMaximumWidth(..), aber die sind dann halt fest 
was aber funktioniert, ist folgendes:
Das Dockwidget installiert in aller Regel mit ...->setWidget(...) ein anderes Widget (im Beispiel vom Typ DockInhaltFenster), das den eigentlichen Inhalt darstellt, sonst wäre es ja nutzlos. Dieses Widget muss folgende Methode überlagern :
Gruß Arne
PS.: habe ich nur mit Qt 3.x und QtJambi geprüft, wäre also für einen Hinweis dankbar ob es auch bei Qt4.x funktioniert
was aber funktioniert, ist folgendes:
Das Dockwidget installiert in aller Regel mit ...->setWidget(...) ein anderes Widget (im Beispiel vom Typ DockInhaltFenster), das den eigentlichen Inhalt darstellt, sonst wäre es ja nutzlos. Dieses Widget muss folgende Methode überlagern :
Code: Alles auswählen
public QSize DockInhaltFenster::sizeHint() {
return QSize(meine_lieblings_breite,meine_lieblings_hoehe);
}
Gruß Arne
PS.: habe ich nur mit Qt 3.x und QtJambi geprüft, wäre also für einen Hinweis dankbar ob es auch bei Qt4.x funktioniert
nein es klappt nicht, bei mir tut sich zumindestens nicht, er ruft auch diese funktion nicht auf.
habe Qt 4.2
Code: Alles auswählen
QSize Console::sizeHint()
{
return QSize(m_width, m_height);
}Es gibt noch die Möglichkeit, mit QSettings die Informationen über das Layout zu speichern. Beim ersten Start des Programms werden die Größen von Qt festgelegt. Der Benutzer kann sich dann seine Dockwidgets anordnen und deren Größe verändern. Beim nächsten Start können diese Informationen wieder geladen werden.
Zum Speichern:
Zum Laden:
Zum Speichern:
Code: Alles auswählen
settings.setValue( QString::fromUtf8( "layout" ), saveState() );Code: Alles auswählen
restoreState( settings.value( QString::fromUtf8( "layout" ) ).toByteArray() );MfG @udisello
Qt Version 4.3.0, MS VS 2005
Qt Version 4.3.0, MS VS 2005
-
NoobSaibot
- Beiträge: 99
- Registriert: 27. Januar 2005 15:55