Frage

Ich bin ein QT-Anwendung zu schreiben und ich brauche ein Terminal einzubetten (wir sagen, xterm) innerhalb eines QDialog, wie eine KDE-Anwendung (siehe kdevelop / kate /...).

Ich habe versucht, mit: - QX11EmbedContainer platziert in die QLayout meiner QDialog - QProcess für das Programm, das ich excecute will

Ich erwarte, dass die QProcess im QX11EmbedContainer läuft, aber es funktioniert nicht.

Das Problem ist, dass ich nicht die xterm in die QX11EmbedContainer setzen können, das einzige, was ich erhalten, ist ein xterm Fenster (leider von meinem QDialog getrennt). Hat jemand das gleiche Problem hat?

War es hilfreich?

Lösung

Sorry, ich habe Ihre Lösung versucht, bevor oh diese Website veröffentlichen und es funktioniert nicht. Ich habe zu kdelibs gelöst Schalten und Verwendung dieser Importe und diesen 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() );

Andere Tipps

Sie müssen die Fenster-ID des Behälters an die xterm zu übergeben.

Wenn Sie sich das Beispiel in der Hilfe Qt suchen QX11EmbedContainer, es geht nur um die Fenster-ID an die QProcess. Ändern Sie dies in

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

Dabei steht „-INTO“ wurde die Argumente hinzugefügt. Von der XTerm- Manpage:

  

-INTO windowId

     

eine X-Window-Kennung (eine Dezimalzahl) Gegeben, xterm     wird ihre oberste Ebene Schale Reparent     Widget in das entsprechende Fenster. Dies wird verwendet,     xterm in anderen Anwendungen einbinden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top