2010-09-02 17 views
0

Mon intention est de créer un QTextEdit avec ses contrôles de texte de portée. Les contrôles que je veux mettre dans une barre d'outils. Mais j'ai des difficultés à contrôler la mise en page. Le problème est que le chevauchement si je mets un QTextEdit dans un QWidget (ma classe hérite de QWidget) qui a une barre d'outils.Comment créer une classe qui est un widget qui a un QTextEdit et un QToolBar au-dessus du texte éditer

Une autre façon que j'ai essayé était la suivante: ma classe hérite de QTextEdit, et il a une barre d'outils. Maintenant, la disposition est différente mais pas ce que je veux. Merci de m'aider à avoir une belle vue.

Répondre

3

Placez votre barre d'outils et QTextEdit dans une disposition de votre classe qui hérite de QWidget. Les dispositions (voir QVBoxLayout) positionnent les éléments les uns par rapport aux autres en s'assurant qu'ils ne se chevauchent pas. Si vous n'utilisez pas de mise en page, tous les widgets enfants seront créés à la position (0,0), c'est-à-dire dans le coin supérieur gauche du widget parent.

QWidget* widget = new QWidget(); 
QToolBar* toolbar = new QToolBar(widget); 
QTextEdit* textedit = new QTextEdit(widget); 

QVBoxLayout* layout = new QVBoxLayout(widget); 
layout->addWidget(toolbar); 
layout->addWidget(textedit); 

Et voila, les widgets ne se chevauchent plus.

+0

Oui, merci et +1. Juste je ne savais pas que la barre d'outils peut être placé dans une mise en page :). – Narek

1

Il ya quelque temps, j'ai écrit mon propre éditeur de texte et je l'ai fait un peu comme vous. J'utilise un QMainwWindow comme main_window et comme widget central un QWidget simple avec une mise en page (QVBoxLayout) dessus. Dans cette mise en page j'ai placé un QTabWidget dans lequel je pourrais ajouter mon propre text_edit (dérivé de QTextEdit) en tant que nouveaux onglets.

J'avais trois barres d'outils que j'ai simplement ajoutées à la fenêtre principale. Ils peuvent donc se déplacer librement autour de mon QTextEdit auto-écrit. J'ai également utilisé DockWidgets pour ajouter un explorateur de fichiers et une fenêtre de journalisation.

alt text

+0

Oui, l'utilisation d'une fenêtre principale est un bon moyen si vous voulez un éditeur de texte. Mais mon application alrady a une mainWindow et je ne peux pas utiliser QMainWindow, donc je ne peux pas utiliser setCentralWidget. En tout cas merci et +1 pour une réponse raisonnable. – Narek