QX11EmbedWidget和QX11EmbedContainer

时间:2009-07-09 08:56:45

标签: qt qx11embedcontainer

可以在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;
}

1 个答案:

答案 0 :(得分:3)

第一个示例工作因为xterm能够重新显示其顶级窗口小部件(X11窗口)。你告诉它使用参数-into <WinId>

我不知道Konsole是否可以这样做,我不使用它,手册页似乎没有谈论这个。

但这并不意味着它不可行,X Window系统非常灵活,任何人都可以重新显示另一个窗口(这就是Windows管理员如何向窗口添加装饰)。

看看man 3 XReparentWindow; - )