Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt应用程序中连接GUI和计算_C++_Qt_Qt4 - Fatal编程技术网

C++ 在Qt应用程序中连接GUI和计算

C++ 在Qt应用程序中连接GUI和计算,c++,qt,qt4,C++,Qt,Qt4,我正在编写一个Qt应用程序,它可以进行一些计算。我想在我的项目中分离两个部分:与GUI相关的部分和负责计算的部分。你能推荐最好的方法吗?请举例说明 我的想法是在main.cpp文件中执行: 我还需要在这两个部分之间建立连接。您可以使用GUI创建一个库,使用计算算法创建另一个库,并使用QT信号和插槽在它们之间交换数据。您需要创建maincompulation类,如图所示(主要继承自QObject,在类声明中包含Q_对象宏,并将一些方法标记为slot) 然后,您需要在GUI元素信号(mouseCl

我正在编写一个Qt应用程序,它可以进行一些计算。我想在我的项目中分离两个部分:与GUI相关的部分和负责计算的部分。你能推荐最好的方法吗?请举例说明


我的想法是在main.cpp文件中执行:


我还需要在这两个部分之间建立连接。

您可以使用GUI创建一个库,使用计算算法创建另一个库,并使用QT信号和插槽在它们之间交换数据。

您需要创建
maincompulation
类,如图所示(主要继承自
QObject
,在类声明中包含
Q_对象
宏,并将一些方法标记为slot)

然后,您需要在GUI元素信号(mouseClick、buttonPress等)和
MainComputation
对象插槽的实例之间连接信号和插槽。这是通过
connect
语句完成的。类似这样

connect(mw.ui->btn,SIGNAL(clicked(bool)),&mc,SLOT(doSomething()));

有一个简单的例子,上面有很多可用的信息。

谢谢你的回答,Jepessen。你能举个例子吗?我在哪里可以读到如何做?分开两个抽象,创建一个Qt对象,作为计算库的适配器,并在这个对象和ui之间交换数据。我也是以同样的方式做的你说了。但是引入信号和插槽有点复杂,因为我的GUI的主窗口细分为更小的对象(QWidgets)。然后你会有插槽连接到这些QWidgets信号。这看起来可能很复杂,但实际上只是自我记录。如果你在一个位置进行所有连接(通常在所有对象实例化之后),您基本上有一个接口的列表。如果认为您需要这种类型的处理,那么以后将其拆分为多个线程也非常简单。
connect(mw.ui->btn,SIGNAL(clicked(bool)),&mc,SLOT(doSomething()));