以下是一个简单的Qt窗体应用程序,其中使用了三个线程并行计算,并在计算完成后将结果相加并输出。
#include <QApplication>
#include <QDebug>
#include <QThread>
class CalculationThread : public QThread {
public:
explicit CalculationThread(int startValue, int endValue)
: m_startValue(startValue), m_endValue(endValue) {}
void run() override {
int sum = 0;
for (int i = m_startValue; i <= m_endValue; ++i) {
sum += i;
}
emit calculationComplete(sum);
}
signals:
void calculationComplete(int result);
private:
int m_startValue;
int m_endValue;
};
class MainWindow : public QWidget {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QWidget(parent) {
// 创建三个计算线程
CalculationThread *thread1 = new CalculationThread(1, 10000);
CalculationThread *thread2 = new CalculationThread(2, 2000);
CalculationThread *thread3 = new CalculationThread(3, 30000);
// 连接信号槽,接收各线程的计算结果
connect(thread1, &CalculationThread::calculationComplete, this, &MainWindow::handleCalculationResult);
connect(thread2, &CalculationThread::calculationComplete, this, &MainWindow::handleCalculationResult);
connect(thread3, &CalculationThread::calculationComplete, this, &MainWindow::handleCalculationResult);
// 启动各个线程
thread1->start();
thread2->start();
thread3->start();
}
private slots:
void handleCalculationResult(int result) {
// 将各个线程计算的结果累加
m_totalSum += result;
++m_completedThreads;
// 检查是否所有线程都已计算完成
if (m_completedThreads == 3) {
qDebug() << "Total Sum:" << m_totalSum;
QApplication::quit();
}
}
private:
int m_totalSum = 0;
int m_completedThreads = 0;
};
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
#include "main.moc"
以上代码创建了一个MainWindow
窗体类,其中使用了三个CalculationThread
线程类来进行并行计算。每个线程分别计算不同范围内的数相加,并在计算完成后发出信号将结果传递给主窗口。主窗口通过接收并累加各个线程的计算结果,最终在所有线程完成时输出总和。
请注意,此处仅提供了一个简单示例,实际情况中可能需要更复杂的同步和管理机制来确保线程安全性。
内容由零声教学AI助手提供,问题来源于学员提问