Qt线程在sleep时能否处理信号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt线程在sleep时能否处理信号相关的知识,希望对你有一定的参考价值。

参考技术A 代码如下:线程代码:threadtest.h#ifndef THREADTEST_H#define THREADTEST_H #include <QThread> class threadtest : public QThread Q_OBJECTpublic: explicit threadtest(QObject *parent = 0);protected: void run();private: bool m_run;public slots: void on_button_clicked(); ; #endif // THREADTEST_H threadtest.cpp#include "threadtest.h"#include <QtCore/QDebug> threadtest::threadtest(QObject *parent) : m_run(false), QThread(parent) void threadtest::run() m_run = true; while(m_run) qDebug()<<"wait"; sleep(600); void threadtest::on_button_clicked() qDebug()<<"button clicked"; 界面代码mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H #include <QMainWindow>#include <QtGui/QPushButton> namespace Ui class MainWindow; class MainWindow : public QMainWindow Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QPushButton *m_btn;; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include "threadtest.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) ui->setupUi(this); m_btn = new QPushButton(tr("button clicked"),this); m_btn->setGeometry(20,20,100,25); threadtest *t = new threadtest(); connect(m_btn,SIGNAL(clicked()),t,SLOT(on_button_clicked())); t->start(); MainWindow::~MainWindow() delete ui; main.cpp#include "mainwindow.h"#include <QApplication> int main(int argc, char *argv[]) QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); 运行结果QDateTime("周五 六月 14 09:45:39 2013") waitQDateTime("周五 六月 14 09:45:45 2013") button clickedQDateTime("周五 六月 14 09:45:46 2013") button clickedQDateTime("周五 六月 14 09:45:46 2013") button clickedQDateTime("周五 六月 14 09:45:47 2013") button clickedQDateTime("周五 六月 14 09:45:47 2013") button clickedQDateTime("周五 六月 14 09:45:48 2013") button clicked 结论Qt线程在sleep的情况下依然可以接收处理来自其他线程的信号本回答被提问者采纳

以上是关于Qt线程在sleep时能否处理信号的主要内容,如果未能解决你的问题,请参考以下文章

QT中的信号与事件,多线程

Qt 线程基础(QThreadQtConcurrent信号槽等)

qt 线程接收线程 moveToThread 特性

Qt 延时处理的几种办法

qt 通过将对象移动到跨线程发出信号

QT中UI主窗口如何与子线程相互传递参数