2008-10-10 13 views

Respuesta

13

La documentación para QDockWidget dice:

Un QDockWidget actúa como un contenedor para su control hijo, engastado con setWidget () Las sugerencias de tamaño personalizado, los tamaños mínimo y máximo y las políticas de tamaño deben ser implementadas en el widget secundario. QDockWidget los respetará, ajustando sus propias restricciones para incluir el marco y el título. Las restricciones de tamaño no deberían establecerse en el QDockWidget mismo, ya que cambian dependiendo de si están acopladas; un QDockWidget acoplado no tiene marco y una barra de título más pequeña.

Por lo tanto, la sugerencia de tamaño se toma de lo que coloque en el widget de dock. ¿Has intentado configurar el tamaño del hijo QDockWidget?

Pero, estoy de acuerdo con Marius, lo mejor que se puede hacer es usar QSettings para guardar y restaurar el ancho de todas las ventanas de la base cuando se inicia la aplicación. Eche un vistazo a QMainWindow::saveState Además de obtener los datos de saveState en lugar de las funciones individuales, mi función de guardado es muy similar a la de Marius.

5

Si desea que tenga el mismo ancho que la última vez que se ejecutó el programa, debe consultar la configuración. La documentación de Qt 4.4 tiene un ejemplo sobre cómo usar la configuración here.

Así es como lo he hecho:

void Applicotion::readSettings() { 
    QSettings settings("Company Name", "Application Name"); 
    settings.beginGroup("LibraryDock"); 
    libraryDock->setFloating(settings.value("docked").toBool()); 
    libraryDock->resize(settings.value("size", QSize(1, 1)).toSize()); 
    libraryDock->move(settings.value("pos", QPoint(200, 200)).toPoint()); 
    addDockWidget((Qt::DockWidgetArea)settings.value("dockarea", Qt::RightDockWidgetArea).toInt(), libraryDock); 
    settings.endGroup(); 
} 

void Applicotion::writeSettings() { 
    QSettings settings("Company Name", "Application Name"); 
    settings.beginGroup("LibraryDock"); 
    settings.setValue("dockarea", dockWidgetArea(libraryDock)); 
    settings.setValue("docked", libraryDock->isFloating()); 
    settings.setValue("size", libraryDock->size()); 
    settings.setValue("pos", libraryDock->pos()); 
    settings.endGroup(); 

}

+13

Si está utilizando QMainWindow para mantener las ventanas acopladas, es mucho más fácil usar saveState y restoreState que guarda el estado de todos los widgets y barras de herramientas de dock –

Cuestiones relacionadas