QDockWidget Déplaçable Onglets
Je suis en utilisant QDockWidgets et placer deux d'entre eux sur le côté gauche de mon application, de sorte que les onglets peuvent être utilisés pour sélectionner entre eux. Cependant, Qt comportement par défaut pour ce semble horrible et n'est pas intuitif. Au lieu d'être en mesure de faire glisser les onglets pour déplacer les widgets, il met une barre en dessous de l'onglet sélectionné (avec le même nom) qui doit être déplacé à la place. En tant qu'utilisateur, il sera difficile de comprendre cela.
(Mon QDockWidgets sont des "Attributs" et "Bibliothèque")
Est-il un moyen de se débarrasser de cette deuxième barre et de le faire donc je peux bouger mon QDockWidgets en faisant glisser les onglets eux-mêmes?
Vous devez vous connecter pour publier un commentaire.
Si vous ajoutez
QTabWidgets
à une fenêtre principale dérivée deQMainWindow
, vous pouvez essayer detabifyDockWidget
.Il tabifies deux
QDockWidgets
juste comme tu le voulais et bien sûr, vous êtes en mesure de les faire glisser.Je pense, Tom n'était pas trop loin de la solution:
Vous pouvez définir votre propre Widget comme la barre de titre:
Si vous la conception de ce widget pour ne pas montrer le quai de titre de la fenêtre, vous l'avez. Via le signal
QDockWidget::topLevelChanged
votre accueil widget peut même devenir informé, quand il devient flottant, de sorte que vous pouvez ensuite activer le titre dansmyTitleBar
de nouveau.Aussi loin que je peux voir de
QDockWidget::mousePressEvent
mise en œuvre danssrc/gui/widgets/qdockwidget.cpp
glisser le dockwidgets à l'aide d'onglets est PAS possible:Comme vous pouvez le voir à partir de la mise en œuvre de l'une des choses que l'
QDockWidget
vérifie avant de permettre la déconnexion est de savoir si la souris de la conférence de presse est venu à partir de la barre de titre ou pas.avez-vous essayé:
edit:
où " il " est un QMainWindow
cela permettra de supprimer la barre de titre, mais im pas sûr de la façon de faire de la QDockWidget déplaçable parmi les onglets
Il semble que vous avez configuré votre dock onglet position pour être au-dessus. La valeur par défaut est d'être sur le fond. Puis c'est pas comme visuellement bouleversant ont l'onglet de texte juste à côté de la barre de titre du texte.
Je ne pense pas qu'il y a moyen de faire ce que vous proposez dans Qt (éliminer les
QDockWidget
barre de titre et faites-le glisser à partir de l'onglet), du moins pas avec les widgets. Vous pourriez probablement écrire beaucoup de code personnalisé pour y arriver, mais ce n'est probablement pas la peine.Au lieu de cela, je vous suggère de déplacer les onglets en bas (voir
QMainWindow::setTabPosition
) ou peut-être l'un des côtés.Je pense aussi que
setTitleBarWidget()
vraiment fait le tour. Je me souviens avoir vu il être utilisé pour un but similaire dans le code source de la Amarok est un lecteur de musique. Amarok est un QMainWindow qui ne contient que des éléments du dock. Vous pourriez vouloir regarder le code source n'.