qt - QX11EmbedWidget 和 QX11EmbedContainer

标签 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;
}

最佳答案

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

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

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

看看man 3 XReparentWindow ;-)

关于qt - QX11EmbedWidget 和 QX11EmbedContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102658/

相关文章:

c++ - Qt5 中 QX11EmbedWidget 的对应物是什么?

android - QT 应用程序在 Android 10 设备上的 std::thread 析构函数处崩溃

c++ - QTableView View 什么都不显示

c++ - QList 的最大大小是多少?

qt - 如何在单个事件中获得多个按键?

c++ - 如果没有窗口,opencv cv::addText 异常

c++ - QX11EmbedContainer 和 QProcess 问题

qt - Qt5 中的 QX11EmbedContainer 替代方案