QX11EmbedWidget и QX11EmbedContainer
Можно ли разместить произвольную программу (firefox, openoffice и т. Д.) В QX11EmbedContainer? Дует кажется, чтобы работать
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;
}
1 ответ
Решение
Первый пример работает, потому что xterm может переписать свой виджет верхнего уровня (окно X11). Вы говорите это сделать с аргументом -into <WinId>
,
Я не знаю, может ли Konsole сделать это, я не использую это, и страница руководства, кажется, не говорит об этом.
Но это не значит, что это невозможно, система X Window очень гибкая, и любой может перекрасить другое окно (именно так менеджеры окон добавляют украшения в окна).
Взгляни на man 3 XReparentWindow
;-)