15 votes

Largeur initiale du QDockWidget

Comment puis-je définir la largeur initiale d'un QDockWidget ?

J'ai implémenté la fonction sizeHint mais que faire ensuite ?

15voto

David Dibben Points 7968

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.

6voto

Marius Points 27452

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.com

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.

Powered by:

X