문제

QT 응용 프로그램을 작성하고 있으며 일부 KDE 응용 프로그램과 같이 QDialog 내에 터미널 (xterm)을 포함시켜야합니다 (Kdevelop/Kate/... 참조).

나는 다음과 같이 노력하고있다 : -qx11embedcontainer는 qdialog의 Qlayout -Qlayout -Qprocess에 배치 된 프로그램을 발굴하고 싶습니다.

QX11embedContainer 내에서 QProcess가 실행될 것으로 예상되지만 작동하지 않습니다.

문제는 XX11embedContainer에 Xterm을 넣을 수 없다는 것입니다. 내가 얻는 유일한 것은 Xterms 창입니다 (불행히도 QDialog에서 분리). 아무도 같은 문제가 있습니까?

도움이 되었습니까?

해결책

죄송합니다.이 사이트를 게시하기 전에 솔루션을 시도했지만 작동하지 않습니다. Kdelibs로 전환하고 해당 가져 오기 와이 코드를 사용했습니다.

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

다른 팁

컨테이너의 창 ID를 XTREM으로 전달해야합니다.

QX11embedContainer의 QT 도움말의 예를 살펴보면 Window ID를 QProcess로 전달합니다. 이것을 변경하십시오

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

"-into"가 인수에 추가되었습니다. Xterm Man 페이지에서 :

-into windowid

X 윈도우 식별자 (소수 정수)가 주어지면 Xterm은 최상위 쉘 위젯을 해당 창으로 다시 구분합니다. 이것은 다른 응용 프로그램 내에 xterm을 포함시키는 데 사용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top