QX11EmbedWidget и QX11EmbedContainer - PullRequest
       19

QX11EmbedWidget и QX11EmbedContainer

3 голосов
/ 09 июля 2009

Можно ли поместить произвольную программу (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 Ответ

3 голосов
/ 14 июля 2009

Первый пример работает, потому что xterm может переписать свой виджет верхнего уровня (окно X11). Вы говорите это сделать с аргументом -into <WinId>.

Я не знаю, сможет ли это сделать Konsole, я им не пользуюсь, и страница руководства, похоже, не говорит об этом.

Но это не значит, что это невозможно, система X Window очень гибкая, и любой может перекрашивать другое окно (именно так менеджеры окон добавляют украшения в окна).

Взгляните на man 3 XReparentWindow; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...