gpt4 book ai didi

c++ - Qt 5.11 - 将外部应用程序嵌入到 QWidget 中

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:04:44 24 4
gpt4 key购买 nike

我正在尝试制作一个在 QWidget ( ui->appWidget ) 中显示为外部窗口(我从 QProcess 运行的其他应用程序)的 qt MainWindow 应用程序。

现在,当我这样做时,新小部件获得 ui->appWidget 大小,但它没有进入,它仍然将外部应用程序显示为外部窗口。

我需要做什么才能将其嵌入到 ui->appWidget 中?

这是我的代码:

void MainWindow::runScript(QString command){

//Set Procees to Scripts directory
process.setWorkingDirectory(directory.currentPath() + "/Scripts");

//Open command process
process.start("./" + command + ".sh" );

//Check if Script succeed to open
if(process.waitForStarted() == false){
qDebug() << "Error starting " << command << " Script";
qDebug() << "ERROR: " << process.errorString();
}else{
qDebug() << "Script succeed to open";
}


QThread::msleep(5000); // make sure process is up.

QWindow * window = QWindow::fromWinId(0x3200005); // 0x3200005 - Hardcoded window id .
QWidget * widget = createWindowContainer(window);
QVBoxLayout * vl = new QVBoxLayout(ui->appWidget);
vl->addWidget(widget);
ui->appWidget->setLayout(vl);
widget->show();

}

如果需要更多详细信息,请告诉我。

感谢您的帮助!

最佳答案

可能您将布局设置为错误的小部件。

看看这段代码,它在 QMainWindow 中移动了一个现有窗口(海豚文件管理器 - 我通过 xwininfo 命令检索了窗口 ID):

int main( int argc, char** argv )
{
int l_result = -1;

QApplication app(argc,argv);

QMainWindow* l_main_win = new QMainWindow();
l_main_win->setWindowTitle("DOLPHIN EMBEDDED IN QT APPLICATION!");

QWindow *l_container = QWindow::fromWinId(0x4400005);
QWidget *l_widget = QWidget::createWindowContainer(l_container);

l_main_win->setCentralWidget(l_widget);
l_main_win->show();

l_result = app.exec();

return l_result;
}

并将我的海豚窗口移动到名为“DOLPHIN EMBEDDED IN QT APPLICATION!”的 Qt 主窗口中:

enter image description here

关于c++ - Qt 5.11 - 将外部应用程序嵌入到 QWidget 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52608457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com