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时能否处理信号的主要内容,如果未能解决你的问题,请参考以下文章