Linux 环境下 Qt 应用程序嵌入外部可执行程序界面
在 Linux 环境下,将一个可执行程序的界面嵌入到另一个 Qt 开发的可执行程序界面中可以通过以下步骤实现:
-
创建一个 Qt 的主窗口项目,并编写主窗口的 UI 界面。
-
在主窗口的 UI 界面中添加一个 QFrame 控件,用于作为嵌入外部程序的容器。
-
在主窗口的代码中,使用 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); // 显示外部程序窗口
- 编译并运行主窗口项目,即可看到外部程序的界面嵌入到主窗口的 QFrame 控件中。
需要注意的是,上述示例代码中的 '/path/to/external/program' 需要替换为实际的外部程序可执行文件路径。另外,嵌入的外部程序需要支持窗口化显示,并且主窗口的 UI 界面需要适当调整大小以容纳嵌入的外部程序界面。
原文地址: http://www.cveoy.top/t/topic/p2X7 著作权归作者所有。请勿转载和采集!