又大又肥硕的奶头小说,又大又粗进去爽a片免费,色窝窝无码一区二区三区,特级做a爰片毛片免费看108

Qt5多線程測試 附所有源代碼

1. 新建工程項目首先我們新建一個工程項目,可以按照平常的步驟進行創建。如果不清楚如何創建,請關注我并查看我的其他經驗。在創建項目時記得勾選上界面選項,因為我們將通過手動繪制窗口界面。主窗口名為Mai

1. 新建工程項目

首先我們新建一個工程項目,可以按照平常的步驟進行創建。如果不清楚如何創建,請關注我并查看我的其他經驗。在創建項目時記得勾選上界面選項,因為我們將通過手動繪制窗口界面。主窗口名為MainWidget。

2. 添加新文件

點擊項目名鼠標右鍵,選擇添加新文件選項。這里我們選擇創建一個C 類,并點擊下一步。

3. 創建TimeWork類

輸入類名為TimeWork,該類用于實現我們的定時器的邏輯功能。點擊完成即可,其他默認設置即可。

4. TimeWork頭文件

在TimeWork的頭文件中添加如下部分,記得加上Q_OBJECT宏,否則無法使用信號槽。

```cpp

include

class TimeWork : public QObject

{

Q_OBJECT

public:

explicit TimeWork(QObject *parent nullptr);

signals:

void timeChanged(int time);

public slots:

void run();

private:

int m_time;

};

```

5. TimeWork源文件

TimeWork的cpp文件,函數的實現如下圖所示。需要注意的是,QThread的run()函數是運行在子線程中的,其余函數均在主線程中運行。對于需要在多個線程中更改的變量,我們需要上鎖來保護變量更改時的線程調用唯一性。

```cpp

include "timework.h"

include

include

TimeWork::TimeWork(QObject *parent) : QObject(parent)

{

m_time 0;

}

void TimeWork::run()

{

while(true)

{

QThread::msleep(100); // 延時100ms

m_time ; // 每100ms時間加1

emit timeChanged(m_time); // 發送時間變化信號

qDebug() << "Time: " << m_time; // 打印時間

}

}

```

6. MainWidget主界面

MainWidget的實現方式如下圖所示。在該界面中,我們可以實現計時器的開始、暫停和停止功能。

```cpp

include "mainwidget.h"

include "ui_mainwidget.h"

MainWidget::MainWidget(QWidget *parent)

: QWidget(parent)

, ui(new Ui::MainWidget)

, m_isRunning(false)

{

ui->setupUi(this);

m_timeWork new TimeWork(this); // 創建TimeWork實例

connect(m_timeWork, TimeWork::timeChanged, this, MainWidget::onTimeChanged); // 連接時間變化信號

}

MainWidget::~MainWidget()

{

delete ui;

}

void MainWidget::onTimeChanged(int time)

{

ui->labelTime->setText(QString::number(time)); // 更新顯示時間

}

void MainWidget::on_pushButtonStart_clicked()

{

if(!m_isRunning)

{

m_timeWork->moveToThread(m_thread); // 將TimeWork移動到子線程中

m_(); // 啟動子線程

m_timeWork->run(); // 運行TimeWork

m_isRunning true;

}

}

void MainWidget::on_pushButtonPause_clicked()

{

if(m_isRunning)

{

m_thread.quit(); // 退出子線程

m_thread.wait(); // 等待子線程結束

m_isRunning false;

}

}

void MainWidget::on_pushButtonStop_clicked()

{

if(m_isRunning)

{

m_thread.quit(); // 退出子線程

m_thread.wait(); // 等待子線程結束

m_isRunning false;

}

m_timeWork->deleteLater(); // 刪除TimeWork實例

m_timeWork new TimeWork(this); // 重新創建TimeWork實例

}

```

7. 程序運行效果

程序可以實現計時器的開始、暫停和停止功能,具體運行效果如下圖所示。

8. 查看源代碼

你可以在[GitHub]()上找到所有的程序源代碼。

標簽:
主站蜘蛛池模板: 大化| 青龙| 安阳市| 建水县| 颍上县| 临汾市| 靖宇县| 陵川县| 东丽区| 库伦旗| 肃北| 峨眉山市| 十堰市| 灵武市| 河津市| 天水市| 波密县| 兴仁县| 田阳县| 宁明县| 龙山县| 澄城县| 南丹县| 汝阳县| 盱眙县| 桃江县| 固镇县| 平和县| 海淀区| 修武县| 介休市| 平果县| 乌鲁木齐市| 沐川县| 龙游县| 邳州市| 如东县| 横峰县| 宜昌市| 漳州市| 巨鹿县|