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 でそれができるかどうかはわかりません。私は使っていませんし、man ページにもこれについて書かれていないようです。

X Window システムは非常に柔軟で、誰でも別のウィンドウの親を変更できます (これは、ウィンドウ マネージャーがウィンドウに装飾を追加する方法です)。

見てくださいman 3 XReparentWindow;-)

于 2009-07-14T11:29:23.960 に答える