在 qwidget 中运行外部应用程序
Posted
技术标签:
【中文标题】在 qwidget 中运行外部应用程序【英文标题】:Run an external application inside a qwidget 【发布时间】:2012-10-01 19:09:25 【问题描述】:我们如何在 QWidget 中嵌入外部应用程序?
我使用 QX11EmbedContainer 尝试过同样的操作,但收到错误“XEvent has not been declared”。
我已经尝试过下面提到的代码('this' 代表一个 qwidget 类引用)
QX11EmbedContainer * container = new QX11EmbedContainer(this);
container->show();
QProcess * process = new QProcess(container);
QString executable("\"C:\\Program Files\\Windows Media Player\\wmplayer.exe\"");
process->start(executable);
this->show();
我正在尝试将容器对象添加到我想在其中运行一些外部应用程序(Application1)的 tabwidget 对象的当前选项卡。 这是我的代码
QTabWidget *tabWidget = new QTabWidget;
/* Trying to add external appllication to a tab of tabwidget object */
QX11EmbedContainer * container = new QX11EmbedContainer(tabWidget->currentWidget());
container->show();
QProcess * process = new QProcess(container);
QString executable("/home/abhishek/practice/Applicaion1");
process->start(executable);
Application1 被执行但在一个单独的窗口中,但我希望它在我的选项卡中运行
【问题讨论】:
QX11EmbedContainer 用于 XWindows。 【参考方案1】:QX11EmbedContainer
仅适用于 X11(例如,在 Linux 上)。从外观上看,您正在尝试在 Windows 上执行此操作。
我对在 Windows 上使用 Qt 不是很熟悉,但看起来 ActiveQt 模块提供了等效的功能。您也许可以在该框架内完成类似的事情。
【讨论】:
我也在 Linux (RHEL 6) 上尝试过相同的方法,但它不起作用。在 linux 中,我给出的路径是 QString executable("/home/abhishek/practice/Applicaion1");当我运行我的代码时,Application1 从我当前的应用程序中执行,但它在单独的窗口中运行。我希望它嵌入到我当前的 QWidget 中。 我明白了。然后听起来您上面的代码示例不完整-您如何处理container
小部件?它看起来不像是添加到布局中或作为现有小部件的子级,这就是它会出现在自己的窗口中的原因。
我已经找到了解决方案。感谢您的帮助
我有同样的问题,我还需要在 qwidget 中运行一个外部应用程序 - cvan 你请分享我你的方法是什么?
@Abhishek:您能否分享您的解决方案,或提供一些建议?我有类似的要求,要在 tabwidget 中启动基于 CLI(命令行界面)的可执行文件。我可以将它作为一个单独的进程在一个单独的窗口中启动,但是将它放在 QTabWidget 中会非常好。你能帮忙吗?谢谢以上是关于在 qwidget 中运行外部应用程序的主要内容,如果未能解决你的问题,请参考以下文章
尝试从外部脚本更新进度条时,QWidget 变得无响应[重复]
“必须在 QWidget 之前构建 QApplication”