J'utilise qt et j'ai une configuration qTabwidget dans l'éditeur de concepteur Qt, vous pouvez le voir dans l'image 1.
Comme vous pouvez le constater après Tab4, il y a un espace vide tout au long du bord droit, je dois en quelque sorte remplir cet espace avec une couleur, comme dans l'image 2 (la meilleure chose à faire serait d'être capable de définir une couleur de décoloration). Ou une autre solution serait que les onglets flottent pour couvrir l'écran entier. P>
J'utilise la feuille de style suivante en ce moment: p>
ui.tabWidget->SetTabsExpanding(true);
4 Réponses :
Comme je le vois, vous avez deux options, en fonction de ce que vous voulez faire.
pour remplir le fond avec la couleur: strong> p> Profitez de la transparence de cette partie du widget de l'onglet. p> ceci fait le widget BG tout orange, mais comme la majeure partie du widget d'onglet dessinera sur le widget BG, vous ne verrez que l'orange où le widget d'onglet ne dessine pas. p> Je pensais que ce serait plus facile que ce soit, mais vous Fondamentalement, je dois sousclure qtabwidget afin d'accéder au widget Barre d'onglets qu'il utilise. p> class ExpandableTabWidget : public QTabWidget
{
Q_OBJECT;
Q_PROPERTY( bool expanding_tabs READ Expanding WRITE SetExpanding );
public:
ExpandableTabWidget( QWidget *parent = NULL ) : QTabWidget( parent )
{
}
bool Expanding() const
{
return tabBar()->expanding();
}
void SetTabsExpanding( bool expanding = true )
{
tabBar()->setExpanding( expanding );
}
};
Merci vraiment beaucoup pour vos idées! J'ai mis à jour ma question initiale ci-dessus avec quelques questions concernant la solution d'expansion, pouvez-vous s'il vous plaît jeter un coup d'œil à cela? Merci encore!
J'ai eu le même problème il y a quelque temps. Je l'ai atteint en faisant "grand" bordure supérieure et en déplaçant une barre d'onglets avec marge p>
Merci! Mais la chose est que j'ai besoin de se décolorer sur mes antécédents, sinon cela fonctionnera.
Qu'entendez-vous par erreur? Vous pouvez définir le dégradé comme couleur de bordure
Voici l'exemple de que pouvez-vous réaliser avec Qt CSS: pl.tinypic.com/r/24lsn5v/ 5 et voici CSS: qtabwidget :: volet {frontière: 0; Border-Top: 30px Solid QinearGradient (x1: 0, Y1: 0, X2: 0, Y2: 1, Stop: 0 rouge, arrêt: 1 jaune); Contexte: Jaune; } Qtabwidget :: tab-bar {top: 30px; }
Les tabs en expansion et la coloration de l'arrière-plan peuvent être accomplis à l'aide de feuilles de style.
Pour les onglets en expansion, une feuille de style peut être appliquée aux onglets qui définit leur largeur sur une fraction de la largeur totale du Bien que l'arrière-plan de la barre d'onglets puisse être défini, la barre d'onglets ne remplit pas l'ensemble de l'espace au-dessus du volet TAB. C'est le conteneur (ou le widget parent) qui montre. Pour contrôler la coloration de cette zone, placez le onglets en expansion: p> arrière-plan à côté des onglets: p> qtabwidget code>. Étant donné que la feuille de style devra être mise à jour lors du redimensionnement, elle est appliquée à l'aide d'un filtre d'événement. Voir le premier code ci-dessous. P>
qtabwidget code> dans un
qwidget code> et définissez la feuille de style sur le conteneur. Voir le deuxième exemple de code ci-dessous. P>
#include <QtGui>
int main(int argc, char * argv[])
{
QApplication app(argc, argv);
QWidget *container = new QWidget;
container->setStyleSheet("background: qlineargradient( x1: 0, y1: 0, x2: 1, y2
: 0, stop: 0 black, stop: 1 blue);");
QHBoxLayout *layout = new QHBoxLayout(container);
layout->setContentsMargins(0, 0, 0, 0);
QTabWidget *tw = new QTabWidget(container);
layout->addWidget(tw);
tw->setStyleSheet(
"QTabBar::tab { background: gray; color: white; padding: 10px; } "
"QTabBar::tab:selected { background: lightgray; } "
"QTabWidget::pane { border: 0; } "
"QWidget { background: lightgray; } ");
tw->addTab(new QWidget, "Tab1");
tw->addTab(new QWidget, "Tab2");
tw->addTab(new QWidget, "Tab3");
container->show();
return app.exec();
}
Vraiment bonne réponse! Je me suis battu avec ce problème pendant des heures avant de trouver votre réponse :-)
Essayez ceci sur MacOS, je trouve que l'écran continue de développer la largeur jusqu'à ce que je l'arrête dans le débogueur! Fonctionne bien sur iOS cependant, alors merci pour cela.
sur QT 4.5 Il existe une nouvelle propriété qui contrôle le rendu du widget d'onglet, appelé DocumentMode strong>. Il suffit d'appeler de la documentation QT: p>
Cette propriété contient si le widget d'onglet est rendu dans un mode approprié pour les pages de documents. C'est la même chose que le mode de document sur Mac OS X. P>
Lorsque cette propriété est définie, le cadre Widget Tab n'est pas rendu. Ce mode est utile pour afficher des pages de type de document dans lequel la page couvre la plus grande partie de la zone de widget d'onglet. P>
blockQuote> tabwidget-> setdocumentmode (true) code> et définissez la couleur d'arrière-plan du QTABBAR à l'aide des feuilles de style. P>
Avez-vous essayé de donner une barre d'arrière-plan? Quel était le résultat?
Oui, testé que, mais rien ne s'est passé. Des idées?
Merci! Mais c'est ce que j'ai joué avec jusqu'à présent mais aucun résultat. N'est-ce pas possible?
La ligne Q_Property ne vous aidera probablement probablement que si vous effectuez un widget d'onglet en expansion dans un plugin. Sinon, si cela générait des avertissements, vous pouvez le supprimer.
En outre, en ce qui concerne le widget d'onglet en expansion, je supposais que cela fonctionnerait, ne l'a jamais fait moi-même. Si cela ne fonctionne pas, vous pouvez créer votre propre onglet widget assez facilement, avec un QTabbar au-dessus d'un QFrame et un Qstackedwidget à l'intérieur de ce QFrame. Vous devrez ajouter une certaine logique pour gérer la commutation, bien sûr. Cependant, je tire un peu plus à essayer de savoir pourquoi les onglets ne se développent pas.
Aha, je suis assez nouveau à Qt, je ne savais donc pas les plugins. Il est étrange que cela n'élargisse pas le Qtabbar du tout, je joue avec elle mais je ne peux rien faire arriver. S'il vous plaît poster si vous effectuez des progrès. Merci vraiment beaucoup!