¿Cómo configuro el ancho inicial de un QDockWidget?QDockWidget ancho inicial
Implementé la función sizeHint, pero ¿qué sigue?
¿Cómo configuro el ancho inicial de un QDockWidget?QDockWidget ancho inicial
Implementé la función sizeHint, pero ¿qué sigue?
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.
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();
}
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 –