Ich habe eine Klasse, die ein Widget erstellt, das ich an meine Hauptanwendung andocken kann. Diese Klasse erbt QDockWidget
. Dies ermöglicht mir, das Widget anzudocken, wenn es mir gefällt. Ich möchte jedoch, dass dieses Widget standardmäßig angedockt wird, anstatt als separates Floating-Fenster angezeigt zu werden.Andocken eines QDockWidget beim Programmstart?
Um Ihnen eine Vorstellung davon zu geben, wie diese Klasse aufgebaut ist, hier ist der Header dafür. Bedenken Sie, dass ich die Funktionen log
und beibehalten möchte.
Logger.h
class Logger : public QDockWidget
{
Q_OBJECT
public:
explicit Logger(QWidget* parent = 0);
void log(QString message);
~Logger();
private:
QWidget* dockWidgetContents;
QGridLayout* gridLayout;
QTextEdit* LoggerEdit;
void showMessage(QString &message);
};
#endif // MESSAGES_H
In der CPP-Datei für meine Hauptanwendung, verwende ich loggerWidget = new Logger(this);
. Das funktioniert, und wenn ich meine Anwendung öffne, erscheint das Logger-Widget. Ich kann es dann auf jeder Seite an die Seiten des Hauptfensters andocken.
Das Problem, mit dem ich konfrontiert bin, ist, dass dieses Widget beim Öffnen an die rechte Seite des Hauptfensters angedockt wird.
Ich habe nach einer Lösung gesucht und festgestellt, dass etwas Ähnliches wie das Folgende in der Hauptfenster-CPP-Datei funktionieren sollte. Ich weiß einfach nicht, wie ich es richtig umsetzen soll.
LoggerWidget = new Logger(this);
this->setWidget(LoggerWidget);
addDockWidget(Qt::RightDockWidgetArea, LoggerWidget);
LoggerWidget->setFloating(false);
ich glaube, das Problem ist, dass seit meiner Logger
Klasse QDockWidget
erben, aber nicht tatsächlich ein QDockWidget
, so kann ich nicht nur ein addDockWidget
in der Haupt-CPP-Datei tun.
Wie kann ich das schaffen, während ich die Funktionalität der Klasse beibehalte?
Es zeigt die vollständige Umsetzung Ihrer Klasse, zumindest den Konstruktor. – eyllanesc