QT开发中文网

写一个qt窗体应用程序,要求三个线程,要求同时跑,第一个线程计算一万个1相加,第二个线程计算2000个2相加,第三个线程计算30000个3相加,在线程都计算完成后将结果进行相加,输出。

以下是一个简单的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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=6271

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?