J'ai une classe qui construit un widget que je suis capable d'ancrer dans mon application principale. Cette classe hérite de QDockWidget
. Cela me permet d'ancrer le widget si je le souhaite. Cependant, je voudrais que ce widget soit ancré par défaut au lieu de s'afficher comme une fenêtre flottante séparée.Ancrer un QDockWidget au démarrage de l'application?
Pour vous donner une idée de la façon dont cette classe est présentée, voici l'en-tête correspondant. Considérez que je veux garder les fonctions log
et showMessage
.
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
Dans le fichier .cpp pour mon application principale, j'utilise loggerWidget = new Logger(this);
. Cela fonctionne, et quand j'ouvre mon application, le widget Logger apparaît. Je peux ensuite l'ancrer dans les côtés de la fenêtre principale de n'importe quel côté.
Le problème que je rencontre est d'amener ce widget à être ancré sur le côté droit de la fenêtre principale lors de l'ouverture.
J'ai cherché une solution et trouvé que quelque chose de similaire à ce qui suit devrait fonctionner dans le fichier .cpp de la fenêtre principale. Je ne sais pas comment l'appliquer correctement.
LoggerWidget = new Logger(this);
this->setWidget(LoggerWidget);
addDockWidget(Qt::RightDockWidgetArea, LoggerWidget);
LoggerWidget->setFloating(false);
Je pense que la question est que, puisque ma Logger
classe hérite QDockWidget
mais pas vraiment un QDockWidget
, donc je ne peux pas faire juste un addDockWidget
dans le fichier .cpp principal.
Comment est-ce que je peux faire fonctionner ceci tout en gardant la fonctionnalité que la classe fournit?
Il montre la mise en œuvre complète de votre classe, au moins le constructeur. – eyllanesc