3

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

1 回答 1

3

第一个示例之所以有效,是因为 xterm 能够重新设置其顶级小部件(X11 窗口)的父级。你用参数告诉它这样做-into <WinId>

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

但这并不意味着它不可行,X Window 系统非常灵活,任何人都可以重新设置另一个窗口(这就是窗口管理器向窗口添加装饰的方式)。

看看man 3 XReparentWindow;-)

于 2009-07-14T11:29:23.960 回答