可以在QX11EmbedContainer中放置一个任意程序(firefox,openoffice等)吗?工作似乎是为了工作
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QX11EmbedContainer container;
container.show();
QProcess * process = new QProcess(&container);
QString executable("xterm");
QStringList arguments;
arguments << "-into";
arguments << QString::number(container.winId());
process->start(executable, arguments);
int status = app.exec();
process->close();
return status;
}
但下一个代码段会启动一个新窗口,而不是我想要的
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QX11EmbedContainer container;
container.show();
QProcess * process = new QProcess(&container);
QString executable("konsole");
process->start(executable);
int status = app.exec();
process->close();
return status;
}
答案 0 :(得分:3)
第一个示例工作因为xterm能够重新显示其顶级窗口小部件(X11窗口)。你告诉它使用参数-into <WinId>
。
我不知道Konsole是否可以这样做,我不使用它,手册页似乎没有谈论这个。
但这并不意味着它不可行,X Window系统非常灵活,任何人都可以重新显示另一个窗口(这就是Windows管理员如何向窗口添加装饰)。
看看man 3 XReparentWindow
; - )