Linux Qt 开发:将可执行程序界面嵌入另一个程序的 Widget
{"title": "Linux Qt 开发:将可执行程序界面嵌入另一个程序的 Widget", "description": "本文介绍了在 Linux 系统下使用 Qt 开发可执行程序,并将一个程序的界面嵌入到另一个程序的 Widget 中的方法。文章包含示例代码,并详细解释了每个步骤。", "keywords": "Qt, Linux, 可执行程序, 嵌入, Widget, 界面, 示例代码", "content": "在 Linux 系统下,可以使用 Qt 开发一个可执行程序,并将其界面嵌入到另一个可执行程序的 widget 中。以下是一个示例代码:\n\n主程序 main.cpp:\n\ncpp\n#include <QApplication>\n#include <QVBoxLayout>\n#include <QHBoxLayout>\n#include <QLabel>\n#include <QPushButton>\n#include <QMainWindow>\n#include <QWidget>\n#include <QProcess>\n\nint main(int argc, char *argv[]) {\n QApplication app(argc, argv);\n\n // 创建主窗口\n QMainWindow mainWindow;\n QWidget *centralWidget = new QWidget(&mainWindow);\n mainWindow.setCentralWidget(centralWidget);\n QVBoxLayout *layout = new QVBoxLayout(centralWidget);\n\n // 创建一个标签和按钮\n QLabel *label = new QLabel("Hello World");\n QPushButton *button = new QPushButton("Launch Widget");\n layout->addWidget(label);\n layout->addWidget(button);\n\n // 创建另一个可执行程序的 widget\n QWidget *widget = new QWidget;\n QHBoxLayout *widgetLayout = new QHBoxLayout(widget);\n QProcess *process = new QProcess;\n process->start("./another_executable"); // 启动另一个可执行程序\n process->waitForStarted();\n process->setProcessChannelMode(QProcess::MergedChannels);\n widgetLayout->addWidget(process);\n widget->setLayout(widgetLayout);\n\n // 点击按钮时将 widget 作为子窗口显示在主窗口中\n QObject::connect(button, &QPushButton::clicked, [&]() {\n QMainWindow *subWindow = new QMainWindow(&mainWindow);\n subWindow->setCentralWidget(widget);\n subWindow->show();\n });\n\n mainWindow.show();\n\n return app.exec();\n}\n\n\n另一个可执行程序的 main.cpp:\n\ncpp\n#include <QApplication>\n#include <QLabel>\n\nint main(int argc, char *argv[]) {\n QApplication app(argc, argv);\n\n QLabel label("Another Executable");\n label.show();\n\n return app.exec();\n}\n\n\n在这个示例中,我们创建了一个主程序,其中包含一个标签和一个按钮。当点击按钮时,会将另一个可执行程序的 widget 作为子窗口显示在主窗口中。\n\n注意:为了使这个示例正常运行,需要将另一个可执行程序的源代码编译为可执行文件,并将其命名为"another_executable"。"}
原文地址: https://www.cveoy.top/t/topic/p2Tr 著作权归作者所有。请勿转载和采集!