Question

J'écris une application QT et je dois intégrer un terminal (disons, xterm) dans un QDialog, comme une application KDE (voir kdevelop / kate /...).

J'ai essayé avec: - QX11EmbedContainer placé dans QLayout de mon QDialog - QProcess pour le programme que je veux exécuter

Je m'attends à ce que le processus QProcess s'exécute dans QX11EmbedContainer, mais cela ne fonctionne pas.

Le problème est que je ne peux pas placer le xterm dans le QX11EmbedContainer, la seule chose que j’obtiens est une fenêtre xterm (malheureusement séparée de mon QDialog). Est-ce que quelqu'un a le même problème?

Était-ce utile?

La solution

Désolé, j'ai essayé votre solution avant de poster oh ce site et cela ne fonctionne pas. J'ai résolu de passer à kdelibs et d'utiliser ces importations et ce code

#include <kparts/part.h>
#include <assert.h>
#include <kde_terminal_interface.h>
#include <kpluginfactory.h>
#include <klibloader.h>
KLibFactory* factory = KLibLoader::self()->factory( "libkonsolepart" );
KParts::Part* p = static_cast<KParts::Part*>(factory->create( this,"tralala",         
QStringList() << "dio") );

assert(p);
setCentralWidget( p->widget() );
TerminalInterface *t = qobject_cast<TerminalInterface*>(p);
t->showShellInDir( QDir::home().path() );

Autres conseils

Vous devez transmettre l'ID de fenêtre du conteneur à xterm.

Si vous consultez l'exemple de l'aide de Qt pour QX11EmbedContainer, il ne fait que passer l'identifiant de fenêtre à QProcess. Changez ceci en

 QProcess process(&container);
 QString executable(app.arguments()[1]);
 QStringList arguments;
 arguments << "-into" << QString::number(container.winId());
 process.start(executable, arguments);

où & -into " a été ajouté aux arguments. Sur la page de manuel XTerm:

  

-dans windowId

     

Étant donné un identifiant de fenêtre X (un entier décimal), xterm     reparent sa coquille de niveau supérieur     widget à cette fenêtre. Ceci est utilisé     intégrer xterm dans d'autres applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top