在 Linux 环境下,将一个可执行程序的界面嵌入到另一个 Qt 开发的可执行程序界面中可以通过以下步骤实现:

  1. 创建一个 Qt 的主窗口项目,并编写主窗口的 UI 界面。

  2. 在主窗口的 UI 界面中添加一个 QFrame 控件,用于作为嵌入外部程序的容器。

  3. 在主窗口的代码中,使用 QProcess 类启动外部程序,并将其输出重定向到一个 QFrame 的 QWidget 容器中。例如:

QProcess process;
process.start('/path/to/external/program');
process.waitForStarted();

QWidget* container = ui->frame; // QFrame 控件作为嵌入外部程序的容器
QWindow* window = QWindow::fromWinId(process.pid()); // 获取外部程序的窗口句柄
QWindow* containerWindow = container->windowHandle(); // 获取容器窗口句柄

window->setParent(containerWindow); // 将外部程序窗口设置为容器窗口的子窗口
window->setFlags(Qt::FramelessWindowHint); // 设置外部程序窗口为无边框模式
window->setVisible(true); // 显示外部程序窗口
  1. 编译并运行主窗口项目,即可看到外部程序的界面嵌入到主窗口的 QFrame 控件中。

需要注意的是,上述示例代码中的 '/path/to/external/program' 需要替换为实际的外部程序可执行文件路径。另外,嵌入的外部程序需要支持窗口化显示,并且主窗口的 UI 界面需要适当调整大小以容纳嵌入的外部程序界面。


原文地址: http://www.cveoy.top/t/topic/p2X7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录