Comment puis-je accéder au QTabBar d'un QTabWidget?Accès à l'instance QTabBar
La seule solution que j'ai trouvée est de sous-classer QTabWidget
et remplacer le QTabWidget::getTabBar()
protégé comme public. Y a-t-il un autre moyen de le faire?
Comment puis-je accéder au QTabBar d'un QTabWidget?Accès à l'instance QTabBar
La seule solution que j'ai trouvée est de sous-classer QTabWidget
et remplacer le QTabWidget::getTabBar()
protégé comme public. Y a-t-il un autre moyen de le faire?
tabBar->findChild<QTabBar *>(QLatin1String("qt_tabwidget_tabbar"));
Il semble que Qt ait un moyen direct de violer les principes d'encapsulation, mais acceptable dans mon cas :) +1, si personne d'autre ne répond, j'accepterai cette réponse. – cybevnm
le seul problème est ... que se passe-t-il si Qt décide de changer le nom de l'objet tabbar? –
AFAIK, les noms étaient définis dans QtDesigner par le développeur (dans le cas où vous créez un gui avec le concepteur) ... – cybevnm
Que voulez-vous faire à la barre d'onglets?
Peut ne pas aider, mais avec stylesheets vous pouvez personnaliser les sous-contrôles QTabWidget :: tab et :: tab-bar.
Je ne voulais pas connaître la hauteur de QTabBar au moment de l'exécution. De toute façon, merci pour vos conseils ... – cybevnm
Essayer d'utiliser des feuilles de style pour personnaliser 'QTabWidget :: tab-bar', par exemple pour mettre' border-bottom: 0px; 'ne fonctionne pas. –
Comme vous l'avez mentionné, le sous-classement est la solution appropriée car il est protégé. Quelque chose comme ceci:
class TabWidget : public QTabWidget {
public:
TabWidget(QWidget *p = 0) : QTabWidget(p){}
public:
QTabBar *tabBar() const { return QTabWidget::tabBar(); }
};
Vous pouvez dire concepteur de « promouvoir » votre QTabWiget à un TabWidget alors vous aurez une fonction tabBar()
accessible.
C'est ce que j'ai fait dans l'une de mes applications. Par l'idée publiée, des regards assez froids me suffisent pour tuer une classe de plus. – elcuco
Pourquoi avez-vous besoin d'accéder au TabBar? Cela peut nous aider à vous orienter vers une solution qui correspond à votre problème. –
Je ne veux pas connaître la hauteur de QTabBar à l'exécution – cybevnm