c++ qt qdockwidget

c++ - QDockWidget ancho inicial



qt (2)

¿Cómo configuro el ancho inicial de un QDockWidget?

Implementé la función sizeHint, pero ¿qué sigue?


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 aquí .

Así es como lo hice:

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();

}


La documentación para QDockWidget dice:

Un QDockWidget actúa como un contenedor para su widget hijo, configurado con setWidget (). Se deben implementar sugerencias de tamaño personalizado, tamaños mínimo y máximo y políticas de tamaño en el widget hijo . QDockWidget los respetará, ajustando sus propias restricciones para incluir el marco y el título. Las limitaciones de tamaño no deberían establecerse en el QDockWidget en sí , 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.

Así que la sugerencia de tamaño se toma de lo que coloque en el widget de dock. ¿Has intentado establecer el tamaño del hijo de 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 lugar de funciones individuales, mi función de guardado es muy similar a la de Marius.