Qt线程在sleep时能否处理信号
1个回答
展开全部
代码如下:线程代码: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的情况下依然可以接收处理来自其他线程的信号
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询