2010-09-02 6 views
3

Je voudrais avoir mon pyqt aplication avoir des onglets dans la barre de menu comme Google Chrome :)onglets PyQt comme dans Google Chrome

Toute suggestion ou un exemple simple sur la façon de le faire?

Je n'ai trouvé ce lien utile:
- http://ivan.fomentgroup.org/blog/2009/03/29/instant-chrome/

+0

Quelles sont les fonctionnalités particulières de Chrome que vous souhaitez implémenter avec Qt? Je pensais que vous parliez de look & feel, mais votre lien parlait de sécurité du processus. Au moins dans l'installation par défaut, Chrome n'a pas vraiment de barre de menus. – jkerian

+0

Je veux seulement le look simple. Onglets en haut et un bouton de réglages sur le côté. :) – hugo24

+2

pouvez-vous télécharger au moins télécharger une image de l'apparence que vous voulez? laissez-moi savoir le look exact afin que je puisse vous envoyer un exemple de code pour cela. –

Répondre

2

Si je comprends bien, il suffit de créer un QWindow qui contient un widget QTabBar (et non un QMenuBar, ou utilisez simplement une QTabWidget comme widget principal du programme ..

3

Vous devez utiliser le Qt.FramelessWindowHint pour cela, puis créer vos propres Max, Min, boutons Fermer widgets et les ajouter là je une bonne boîte à outils de travail pour ces types de logiciels: http://traipse.assembla.com/spaces/ghostqt

Dans votre cas, vous devriez le resizeEvent afin de reclasser vous pouvez changer les drapeaux. Si la fenêtre est agrandie, vous n'aurez pas à vous soucier de la déplacer, mais si elle n'est pas agrandie, vous pouvez supprimer l'indicateur Qt.FramelessWindowHint et récupérer votre barre de titre; comme le fait Chrome.

Est-ce ce que vous cherchez?

+0

c'est un bon point de départ. Mais comment puis-je faire un bouton juste à côté d'un TabsWidget. Comme dans l'opéra: http://www.shrani.si/f/1u/e9/2GyFHhFv/tabs-in-menu.jpg – hugo24

+1

Je vais être honnête. Ce n'est pas la tâche la plus facile à accomplir. Je n'ai jamais essayé cela auparavant, je ne peux donc que vous donner une idée de la façon dont cela est fait. Gardez à l'esprit que QTabWidget hérite de QWidget, donc si vous pouvez toujours savoir ce que QLayout est utilisé, vous pouvez ajouter des widgets à la mise en page. Vous pouvez probablement faire tomber les widgets dans un QGridLayout, puis étendre le contenu de l'onglet, ou utiliser CSS pour réduire les marges et les paddings. Tout cela n'est que spéculation. Je voudrais expérimenter avec différentes options et voir ce que vous pouvez faire. Le premier sur la liste serait la disposition de la grille. –

2

vous devez effectuer les opérations suivantes:

  • Supprimer la bordure de fenêtre (FramelessWindowHint)
  • Mettre en oeuvre votre propre fenêtre mobile et le code de redimensionnement
  • Insérer TabBar sur le dessus, et ajouter des boutons pour près etc. à (ou créer un cadre qui contiendra la barre d'onglets et boutons)

et que tout ce qui a été fait dans Webbie (le lien fourni) :)

+0

Eh bien, je ne pense pas que ce soit la bonne solution. Créer un 'FramelessWindowHint' fera en sorte que l'application passe en plein écran lorsque l'utilisateur la maximisera. – swdev

Questions connexes