2017-07-11 2 views
0

Je veux insérer QLabel et QLineEdit dans l'en-tête de QTabWidget. J'ai lu la documentation de Qt mais n'ai trouvé aucune fonction capable de définir un Qwidget dans l'en-tête de QTabWidget.Comment définir QWidget dans l'en-tête QTabWidget?

Comment puis-je faire cela? Ou dois-je remplacer la fonction QTabWidget Painter?

Avez-vous des suggestions?

+0

Je ne sais pas ce que vous entendez par "tête", mais est [ 'QTabBar :: setTabButton'] (http: //doc.qt.io/qt-5/qtabbar.html#setTabButton) ce que vous cherchez? –

+0

@ G.M. je parle de QTabWidget, setTabButton n'est pas disponible dans QTabWidget. Et en disant en-tête, je veux dire le nom de l'onglet qui est affiché sur le dessus, comme , secretgenes

+1

"setTabButton n'est pas disponible dans QTabWidget". Non, mais il y a ['QTabWidget :: tabBar'] (http://doc.qt.io/qt-5/qtabwidget.html#tabBar) donc vous pouvez obtenir le' QTabBar' associé au 'QTabWidget'. –

Répondre

1

Vous devez utiliser la fonction setTabButton:

vide QTabBar :: setTabButton (int index, la position ButtonPosition, QWidget * Widget)

Sets widget sur l'index de tabulation. Le widget est placé à gauche ou côté droit en fonction de la position.

Tout widget précédemment positionné est masqué.

La barre d'onglet prendra la propriété du widget et ainsi tous les widgets mis ici seront supprimés par la barre d'onglets quand il est détruit, sauf si vous séparément Reparent le widget après avoir défini un autre widget (ou 0).

Cette fonction a été introduite dans Qt 4.5.

Ceci n'est pas associé à QTabWidget mais à QTabBar.

Pour obtenir le QtabBar vous devez utiliser la fonction:

QTabBar * QTabWidget :: tabBar() const

Renvoie la QTabBar actuelle.

Exemple:

#include <QApplication> 

#include <QLabel> 
#include <QTabBar> 
#include <QTabWidget> 
#include <QLineEdit> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QTabWidget w; 
    w.addTab(new QLabel("widget 1"), "1"); 
    w.addTab(new QLabel("widget 2"), "2"); 

    QTabBar *tabBar = w.tabBar(); 

    tabBar->setTabButton(0, QTabBar::LeftSide, new QLineEdit("LineEdit0")); 
    tabBar->setTabButton(0, QTabBar::RightSide, new QLabel("label0")); 

    tabBar->setTabButton(1, QTabBar::LeftSide, new QLineEdit("LineEdit1")); 
    tabBar->setTabButton(1, QTabBar::RightSide, new QLabel("label1")); 
    w.show(); 

    return a.exec(); 
} 

Sortie:

enter image description here