class message_field : public QTextEdit {
Q_OBJECT
public:
message_field(QWidget *parent = 0);
QPushButton *bold_button;
QPushButton *italic_button;
QPushButton *underline_button;
};
message_field::message_field(QWidget *parent)
{
bold_button = new QPushButton(this);
bold_button->setIcon(QIcon::fromTheme("format-text-bold"));
italic_button = new QPushButton(this);
italic_button->setIcon(QIcon::fromTheme("format-text-italic"));
underline_button = new QPushButton(this);
underline_button->setIcon(QIcon::fromTheme("format-text-underline"));
QVBoxLayout *buttons = new QVBoxLayout;
buttons->addWidget(bold_button);
buttons->addWidget(italic_button);
buttons->addWidget(underline_button);
}
Jetzt möchte ich nur noch das buttons-Layout neben dem "Hauptbestandteil" des QTextEdit platzieren. Ich kann ja schlecht ein Haupt-Layout definieren und layout->addWidget(this); benutzen, das macht ja keinen Sinn.
Gibt es eine möglichkeit, wie ich auf das eigentliche Textfeld des QTextEdit zugreifen kann, oder muss ich eine neue QWidget-Klasse erstellen, die intern ein QTextEdit instanziert und dazu die Buttons bastelt?
class message_field : public QTextEdit
Gibt es eine möglichkeit, wie ich auf das eigentliche Textfeld des QTextEdit zugreifen kann, oder muss ich eine neue QWidget-Klasse erstellen, die intern ein QTextEdit instanziert und dazu die Buttons bastelt?
Du hast ja ein Object abgeleitet von QTextEdit. Um auf das Textfeld zuzugreifen musst Du nur auf this zugreifen...
probiert, endet das in einer Endlosschleife. Ich bräuchte also einen Weg, wie ich auf den "weißen Rahmen" des QTextEdits zugreifen kann, ohne dass ich gleich das gesamte Widget ansprechen muss. Natürlich bin ich auch für andere Vorschläge (als Layouts) offen, ich möchte nur irgendwie ein QTextEdit bekommen, das intern gleich die Funktionalität für Fett/Kursiv etc.-Buttons hat, ohne dass ich eine extra Klasse schreiben muss, die von QTextEdit jedoch nicht abgeleitet ist.
zugreifen, vorrausgesetzt das textedit an sich ist "public". Eine andere Möglichkeit gibt es nicht, sehe ich das richtig? Das "perfekte" Ergebnis wäre eine Klasse, die die komplette funktionalität von QTextEdit aufweißt und um die Buttons nur erweitert wäre.
Du kannst doch auch nur ein Widget schreiben, das die Knöpfe enthält, und dann beim/nach dem Erstellen ein QTextEdit zuweisen, das bearbeitet werden soll? Oder greifst du in deiner Klasse auf protected Attribute von QTextEdit zu? Irgend welche Events?
Das ist eine gute Idee. Ich würde also ein Button-Widget schreiben, dem ich einen Pointer auf das QTextEdit übergebe - in diesem Widget kann ich dann automatisch die QTextEdit-Methoden setFontItalic etc. verwenden. Ansonsten brauche ich nichts vom QTextEdit.
Danke für die Hilfe, ich probier das gleich mal aus!