C++/Qt:在C++和Qt GUI之间传递变量,无需C++部分(包括Qt库)
C++/Qt: Pass variables between C++ and Qt GUI without the C++ part including the Qt library
已关闭:
感谢大家的想法,将尝试使用您提供的建议,以便解决我的问题!
问题:
"C++ main"(不能#include QObject
或任何Qt库)获取数据,处理数据并将其传递到单独的Qt进程(在这种情况下为Qt GUI)。
数据在Qt GUI中可视化并提供反馈,例如,您可以将命令发送到"C++主"(如启动/停止测量)。
以最佳油漆质量可视化问题。
问题:
"C++ main"是否有任何可能的方法可以从Qt GUI获得反馈,而无需以任何方式将Qt包含在"C++ main"中?("C++主"运行在无法处理/加载Qt库的I/O卡上。
提前感谢您的有用答案!
如果没有太多关于"C++ main"中发生的事情的代码,很难回答。但是,如果您的类具有在 main 中创建然后用于 IO 的正确接口,则可以执行以下操作:
class MyIoHandler {
public:
enum Command {START, STOP};
MyIoHandler() {}
void command(Command command) { d_command = command; } // Set the command
void getData(MyData& data) { data = d_data; } // Do a deep copy
private:
void run()
{
while(d_command == START) {
readDataFromIO();
d_data = data;
}
}
Command d_command;
MyData d_data;
};
然后,GUI 只需要在类上调用正确的函数即可与 IO 处理程序进行交互。主类不需要知道 GUI 的外观,但 GUI 必须知道类的外观。
这也是基于它们在同一个可执行文件中(来自注释)
和你只需要注意线程等。
但如前所述,如果没有一些结构或代码示例,很难给出有用的答案。
我通常使用QUdpSocket(在Qt世界中)与我的其他应用程序(有效地用于IPC)进行通信。然后你的c ++世界你可以使用普通的套接字sys/socket.h
来完成同样的工作。由于您的通信很简单 - 即消息传递很容易做到。创建 c++/Qt 类来处理您的 UDP 需要付出一些努力,但从那时起它真的很容易。
对我来说,主要缺点是两个程序必须就要使用的端口达成一致(IP 地址将是环回地址 127.0.0.1)。所以你可能有一个配置文件,或者一个命令行参数来设置这个......
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- Qt SQlite无法创建表