QT多线程通信EMIT

原创 2016年10月06日 17:06:29

头文件:

#ifndef HEAD_H

#define HEAD_H
#include <QWidget>
#include <QThread>
#include <QMessageBox>
#include <QApplication>
#include <QDebug>

class MyThread: public QThread
{
    Q_OBJECT
public:
    MyThread();
    void run();
signals:
    void send(QString s);
};

class MyWidget : public QWidget {
    Q_OBJECT
public:
    MyWidget (QWidget *parent = 0);
    ~MyWidget();
public slots:
    void receiveslot(QString s);
};
#endif // HEAD_H



CPP文件:#include "head.h"

MyThread::MyThread()
{
}
void MyThread::run()
{
    while(true)
    {
    sleep(5);
    emit send("This is the son thread");
    qDebug()<<"Thread is running!";
    }
//    exec();
    QThread::run();
}


MyWidget::MyWidget(QWidget *parent) :QWidget(parent)
{

}
MyWidget::~MyWidget()
{
}
void MyWidget::receiveslot(QString s)
{
QMessageBox::information(0,"Information",s);
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWidget w;
    w.show();
    MyThread *mth= new MyThread ;
    QObject::connect(mth,SIGNAL(send(QString)),&w,SLOT(receiveslot(QString)));
    mth->start();
    return a.exec();
}

PRO文件:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11

TARGET = untitled35


TEMPLATE = app

SOURCES += main.cpp

HEADERS += \
    head.h




Qt中信号与槽机制中emit的应用

信号与槽机制是qt的核心,一个信号可以接多个槽,多个信号也可以接一个槽,当然一个信号也可以接一个槽。本文的重点是讲述emit的应用,emit是qt中定义的宏,是用来发送一个信号,然后你再写一个槽函数。...

QThread与其他线程间相互通信,emit,发射信号

来自:http://blog.csdn.net/huihui1988/archive/2010/06/12/5665432.aspxQThread的用法其实比较简单,只需要派生一个QThread的子类...

QT子线程与主线程的信号槽通信

最近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI。所以,网络通信端采用新开线程的方式。在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦。网上提供了很多同一线程不同类间采用信号...

qt 多线程之间通讯

问题描述:界面线程MainApp为主线程,工作线程MyThread为一子线程,从工作线程向主线程传递字符串用于在主线程中显示。 Qt的信号与槽机制可以将任何继承自QObject类的对象捆绑在一起...
  • sduvec
  • sduvec
  • 2014年09月15日 19:59
  • 10964

Qt5线程之间通信的小例子

mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include namespace Ui { class Main...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

QT---线程间通信

     在 Qt 系统中,运行着一个GUI 主事件线程,这个主线程从窗口系统中获取事件,并将它们分发到各个组件去处理。在 QThread 类中有一种从非主事件线程中将事件提交给一个对象的方法,也就是...

Qt多线程基础(三)子线程与主线程通信

一、澄清概念 1.Qt主线程 Qt的主线程是唯一运行创建QApplication对象并调用exec()的线程,主要用于界面显示,因此又被称为GUI线程。 2.Qt子线程 Qt的子线程用于一些耗时操作,...

Qt emit的使用

假设现在我定义了一个类A,现在想在A的一个函数void A::function1()当中的结尾处emit一个信号signal1(),然后利用这个信号触发另一个类B进行某项操作void B::funct...

Qt:信号与槽(Signals and Slots) 下

http://hi.baidu.com/spygg/item/519f4dd7575704ce1b72b4e7 信号(Signals) 只有定义了信号的类及其子类可以发出信号。   一个信号发...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT多线程通信EMIT
举报原因:
原因补充:

(最多只允许输入30个字)