Qt: Style QTabWidget
J'utilise Qt et j'ai un QTabWidget l'installation dans le Qt Designer de l'Éditeur, vous pouvez le voir sur l'image 1.
photo 1 http://i40.tinypic.com/1109ba1.jpg
Comme vous pouvez le voir après Tab4 il y a un espace vide tout le chemin vers le bord droit, d'une certaine manière j'ai besoin de combler l'espace avec une couleur, comme dans le tableau 2 (la meilleure chose serait d'être en mesure de définir une décoloration de la couleur). Ou une autre solution serait que les onglets de flotter hors de couvrir la totalité de l'écran.
image 2 http://i41.tinypic.com/zwmijr.jpg
- Je utiliser la feuille de style suivant: la
QTabWidget::tab-bar {
}
QTabBar::tab {
background: gray;
color: white;
padding: 10px;
}
QTabBar::tab:selected {
background: lightgray;
}
Est-il un moyen de définir la couleur d'arrière-plan de la QTabBar à l'aide de Qt feuilles de style? Ou puis-je obtenir les onglets flottant vers le bord à l'aide de Qt feuilles de style?
EDIT:
J'ai essayé la solution que Caleb Huitt - cjhuitt indiqué ci-dessous. J'aime vraiment l'idée de faire les onglets expansion, mais ne peut pas le faire fonctionner.
Dans Qt Designer de l'Éditeur je clic droit sur mon QTabWidget->"Promouvoir ..." et choisissez "nom de classe de Base": QTabWidget
"Promu nom de la classe": ExpandableTabWidget
et puis je clique sur ajouter, puis le Promouvoir.
Dans la méthode init de la widget qui détient mon QTabWidget j'ai mis
ui.tabWidget->SetTabsExpanding(true);
Tout est de construction très bien mais le QTabbar ne se déplie pas.
Je fais quelque chose de mal?
Merci!
Oui, testé, mais rien ne s'est passé. Des idées?
Je ne peux pas beaucoup vous aider, mais vous conseille de jeter un oeil à cette page web, sauf si vous avez déjà doc.trolltech.com/4.6/...
Merci! Mais c'est ce que j'ai joué avec jusqu'à présent, mais pas de résultats. N'est-ce pas possible?
Le Q_PROPERTY ligne sera probablement seulement vous aider si vous faites l'expansion de l'onglet widget dans un plugin. Sinon, si c'est la génération de mises en garde, vous pouvez le supprimer.
OriginalL'auteur Martin | 2010-03-19
Vous devez vous connecter pour publier un commentaire.
À la fois l'expansion des onglets et de la coloration de l'arrière-plan peut être accompli en utilisant des feuilles de style.
Pour l'expansion des onglets, une feuille de style peut être appliqué pour les onglets qui définit leur largeur à une fraction de la largeur totale de la
QTabWidget
. Depuis la feuille de style qui sera mis à jour lors de la redimensionner, il est appliqué à l'aide d'un filtre d'événement. Voir le premier exemple de code ci-dessous.Bien que l'arrière-plan de la barre d'onglet peut être définie, la barre d'onglet de ne pas remplir tout l'espace au-dessus de l'onglet du volet. C'est le récipient (ou le parent du widget) qui est visible à travers. Pour contrôler la coloration de la zone, mettre le
QTabWidget
dans unQWidget
et définir la feuille de style sur le conteneur. Voir le deuxième exemple de code ci-dessous.Expansion onglets:
Fond à côté des onglets:
vraiment super réponse! Je me battais avec ce problème pendant des heures avant de trouver votre aswer 🙂
Je ne pense pas que cela fonctionne sur OSX.
Essayer ce sur macOS, je trouve que l'écran s'étend en largeur jusqu'à ce que je l'arrêter dans le débogueur! Fonctionne sur iOS cependant, alors merci pour ça.
OriginalL'auteur
Comme je le vois, vous avez deux options, en fonction de ce que vous voulez faire.
Pour remplir le fond avec la couleur:
Prendre avantage de la transparence de la partie de l'onglet widget.
Cela rend le bg widget tous orange, mais puisque la plupart de l'onglet widget attirera plus le bg widget, vous ne pourrez voir que le orange où l'onglet widget n'a pas de tirage.
Pour faire les pattes développez:
Je pensais que ce serait plus facile que ça en est, mais en gros, vous avez une classe de QTabWidget afin d'obtenir l'accès à l'onglet de la barre de widget il utilise.
Vous serait alors nécessaire de faire de votre
ExpandableTabWidget
classe dans un plugin et de l'utiliser dans le concepteur, ou vous pouvez promouvoir votre onglet widget pour être de typeExpandableTabWidget
et de définir l'expansion de la valeur dans le code. Si vous choisissez de faire de la promotion, vous ne verrez pas les résultats que vous voulez dans le concepteur, mais vous, lorsque vous exécutez votre programme.Je ne pense pas que cela fonctionne sur OSX.
OriginalL'auteur
Sur l'intervalle qt 4.5, il est une nouvelle propriété qui contrôle l'onglet widget de rendu, appelé documentMode. Appelez simplement
tabWidget->setDocumentMode(true)
et définir la couleur d'arrière-plan de la QTabBar en utilisant les feuilles de style.De Documentation De Qt:
OriginalL'auteur
J'ai eu le même problème il y a quelques temps. Je l'ai réalisé en faisant des "grands" de la bordure supérieure, et le déplacement de la barre d'onglets avec marge
qu'entendez-vous par la décoloration? Vous pouvez définir dégradé couleur de la bordure
Ici est un exemple de ce que vous pouvez réaliser avec Qt CSS: pl.tinypic.com/r/24lsn5v/5 et voici le CSS: QTabWidget::volet {border: 0; border-top: 30px solide qlineargradient(x1:0, y1:0, x2:0, y2:1, arrêt: 0 rouge, stop: 1 jaune); background: yellow; } QTabWidget::tab-bar { top: 30px; }
Ici est le code complet avec les css pastebin.com/P7fcB3HN
OriginalL'auteur