Seite 1 von 1
Qt4: intiale Breite von QDockWidget
Verfasst: 16. Dezember 2006 10:47
von woigl
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?
Verfasst: 16. Dezember 2006 14:03
von upsala
resize schon mal ausprobiert?
Verfasst: 16. Dezember 2006 19:34
von woigl
upsala hat geschrieben:resize schon mal ausprobiert?
ja, aendert aber gar nichts!
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);
hat jemand damit erfahrungen gesammelt?
Verfasst: 28. Januar 2007 23:06
von ArneStocker
.. 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 :
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
Verfasst: 7. Juni 2007 18:34
von Nash
nein es klappt nicht, bei mir tut sich zumindestens nicht, er ruft auch diese funktion nicht auf.
Code: Alles auswählen
QSize Console::sizeHint()
{
return QSize(m_width, m_height);
}
habe Qt 4.2
Verfasst: 8. Juni 2007 09:18
von @udisello
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:
Code: Alles auswählen
settings.setValue( QString::fromUtf8( "layout" ), saveState() );
Zum Laden:
Code: Alles auswählen
restoreState( settings.value( QString::fromUtf8( "layout" ) ).toByteArray() );
Verfasst: 27. Juni 2007 18:02
von daimonion
Ich habe genau das selbe Problem, aber ebenso noch keine Lösung gefunden.
bin gerade dabei das initiale Fenster zu bauen. Daher habe ich noch keine Widgets die in die Socks reinkommen.
Vielleicht gibts ja noch ne andere Lösung. Im QT Assistant gehts ja auch.
Verfasst: 27. Juni 2007 19:10
von NoobSaibot
programm aufrufen und einstellungen vornehmen ( die gewünschte breite einstellen ). das ganze in eine QSettings datei mit QMainWindow::saveState() speichern. Diese Datei als interne Ressource einbinden.
Die Werte, die in der internen QSettings stehen, könnt ihr als Standardwerte verwenden.
Verfasst: 27. Juni 2007 20:32
von daimonion
Okay, werd ich morgen gleich mal versuchen.