Comment puis-je définir la largeur initiale d'un QDockWidget ?
J'ai implémenté la fonction sizeHint mais que faire ensuite ?
Comment puis-je définir la largeur initiale d'un QDockWidget ?
J'ai implémenté la fonction sizeHint mais que faire ensuite ?
La documentation pour QDockWidget
dit :
Un QDockWidget agit comme une enveloppe pour son widget enfant, défini avec setWidget(). Les indications de taille personnalisées, les tailles minimales et maximales et les politiques de taille doivent être définies par les utilisateurs. mis en œuvre dans le widget enfant . QDockWidget les respectera, en ajustant ses propres contraintes pour inclure le cadre et le titre. Les contraintes de taille ne doivent pas être définies sur le QDockWidget lui-même. Un QDockWidget ancré n'a pas de cadre et sa barre de titre est plus petite.
L'indication de taille est donc tirée de ce que vous avez placé dans le widget du dock. Avez-vous essayé de définir la taille de l'élément QDockWidget
de l'enfant ?
Mais, je suis d'accord avec Marius, la meilleure chose à faire est probablement d'utiliser QSettings
pour enregistrer et restaurer les largeurs de toutes les fenêtres du dock au démarrage de l'application. Jetez un coup d'œil à QMainWindow::saveState
En plus d'obtenir les données de saveState
plutôt que des fonctions individuelles, ma fonction de sauvegarde ressemble beaucoup à celle donnée par Marius.
Si vous voulez qu'il ait la même largeur que lors de la dernière exécution du programme, vous devriez vous pencher sur les paramètres. La documentation de Qt 4.4 contient un exemple sur la façon d'utiliser les paramètres. aquí .
C'est ainsi que j'ai procédé :
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();
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.