2012-10-01 20 views
0

我們如何在QWidget中嵌入外部應用程序?在qwidget中運行外部應用程序

我已經嘗試過使用QX11EmbedContainer,但得到錯誤「XEvent尚未聲明」。

我試圖下面提到代碼(「這個」代表一個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(); 

容器對象我試圖添加到我要運行一些外部應用程序(tabwidget對象的當前標籤應用程序1)。 這是我的代碼

 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); 

應用1被執行,但在一個單獨的窗口,但我希望它在我的標籤

+0

QX11EmbedContainer用於XWindows。 – drescherjm

回答

2

QX11EmbedContainer運行僅適用於X11(例如,在Linux上)。從外觀上看,你正試圖在Windows上做到這一點。

我不是很熟悉在Windows上使用Qt,但它看起來像ActiveQt模塊提供的等效功能。你可能能夠在該框架內完成這樣的事情。

+0

我在Linux上也嘗試過(RHEL 6),但它不起作用。 在Linux中我給出的路徑是 QString可執行文件(「/ home/abhishek/practice/Applicaion1」); 當我運行我的代碼時,Application1從我當前的應用程序執行,但它運行在一個單獨的窗口中。 我希望它被嵌入到我當前的QWidget中。 – Abhishek

+0

我明白了。然後,聽起來你上面的代碼示例是不完整的 - 你如何處理'container'小部件?它看起來不像是添加到佈局或作爲現有窗口小部件的子窗口,這就是它出現在自己的窗口中的原因。 – jmk

+0

容器我添加到Tabwidget對象的選項卡中,如上面的代碼 – Abhishek