建行网站会员有什么用,h5网站快速搭建,中国建设银行企业网站,seo网站推广全程实例上篇QT给端口扫描工程增加线程2-CSDN博客
为按钮pushButton_Stop添加clicked事件#xff0c;功能为暂停扫描#xff0c;并在暂停后显示继续按钮#xff0c;点击继续按钮之后继续扫描
1.更新UI
添加继续按钮
点击转到槽则会自动声明 2. 更新 MainWindow.h
需要新增的部分…上篇QT给端口扫描工程增加线程2-CSDN博客
为按钮pushButton_Stop添加clicked事件功能为暂停扫描并在暂停后显示继续按钮点击继续按钮之后继续扫描
1.更新UI
添加继续按钮
点击转到槽则会自动声明 2. 更新 MainWindow.h
需要新增的部分
private slots: void on_pushButton_Stop_clicked(); // 暂停按钮点击事件 void on_pushButton_Continue_clicked(); // 继续按钮点击事件 private: bool isPaused; // 用于跟踪扫描是否暂停
3. 更新 MainWindow.cpp 在 MainWindow.cpp 中实现暂停和继续的功能。
3.1 初始化成员变量
在构造函数中初始化 isPaused 变量并设置 pushButton_Continue 为隐藏状态
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), isPaused(false) // 初始化为未暂停状态
{ ui-setupUi(this); ui-pushButton_Continue-setVisible(false); // 隐藏继续按钮
} 3.2 实现暂停功能
在 on_pushButton_Stop_clicked() 槽函数中设置 isPaused 为 true并隐藏暂停按钮显示继续按钮
void MainWindow::on_pushButton_Stop_clicked() { isPaused true; // 设置为暂停状态 ui-pushButton_Stop-setEnabled(false); // 禁用暂停按钮 ui-pushButton_Continue-setVisible(true); // 显示继续按钮
}
3.3 实现继续功能
在 on_pushButton_Continue_clicked() 槽函数中设置 isPaused 为 false并隐藏继续按钮启用暂停按钮
void MainWindow::on_pushButton_Continue_clicked() { isPaused false; // 设置为继续状态 ui-pushButton_Stop-setEnabled(true); // 启用暂停按钮 ui-pushButton_Continue-setVisible(false); // 隐藏继续按钮 // 继续扫描的逻辑 // 这里可以调用一个函数来继续扫描 continueScanning();
}
4. 修改扫描逻辑
在 MyThread 类中您需要修改扫描逻辑以便在扫描过程中检查 isPaused 状态。如果扫描被暂停则线程应等待直到继续按钮被点击。
4.1更新 MyThread.h 4.2更新 MyThread.cpp
在 MyThread.cpp 中实现 setPaused 方法并在 run() 方法中检查 isPaused 状态
void MyThread::setPaused(bool paused) { isPaused paused; // 更新暂停状态
} while (isPaused) { msleep(100); // 暂停扫描避免 CPU 占用过高 }
4.3在主窗口中管理暂停和继续
在点击暂停和继续按钮时调用 setPaused 方法。 5.连接信号和槽
因为先点击扫描才会有后面的暂停和继续所以我选择把这个步骤放到扫描按钮点击事件处理函数 void MainWindow::on_pushButton_Scan_clicked()中
connect(ui-pushButton_Stop, QPushButton::clicked, this, MainWindow::on_pushButton_Stop_clicked);
connect(ui-pushButton_Continue, QPushButton::clicked, this, MainWindow::on_pushButton_Continue_clicked);