qtcreator instalar how creator linux qt x11 kde xterm

linux - instalar - incrustación de una aplicación(en este caso, un terminal) dentro de una aplicación QT



qt libraries ubuntu (2)

Debe pasar el ID de ventana del contenedor al xterm.

Si observa el ejemplo en la ayuda de Qt para QX11EmbedContainer, simplemente pasa la identificación de la ventana al QProcess. Cambiar esto a

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

donde "-into" ha sido agregado a los argumentos. De la página man de XTerm:

-in ventana ID

Dado un identificador de ventana X (un entero decimal), xterm reparará su widget de shell de nivel superior a esa ventana. Esto se usa para incrustar xterm dentro de otras aplicaciones.

Estoy escribiendo una aplicación QT y necesito insertar un terminal (digamos, xterm) dentro de un QDialog, como alguna aplicación KDE (ver kdevelop / kate / ...).

He estado intentando con: - QX11EmbedContainer colocado en el QLayout de mi QDialog - QProcess para el programa que quiero ejecutar

Espero que QProcess se ejecute dentro del QX11EmbedContainer, pero no funciona.

El problema es que no puedo poner el xterm en el QX11EmbedContainer, lo único que obtengo es una ventana de xterm (desafortunadamente separada de mi QDialog). ¿Alguien tiene el mismo problema?


Lo siento, probé tu solución antes de publicar oh este sitio y no funciona. He resuelto cambiar a kdelibs y usar esas importaciones y este código

#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() );