#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>
#include<qobject.h>
#include"XThread.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtWidgetsApplication1 w;
w.show();
XThread xt; //XThread是在XThread.h中继承QThread的类
xt.start(); //开启线程
QObject::connect(&xt, SIGNAL(Move(int, int)), &w, SLOT(move(int, int)));//xt线程中发出信号Move(int, int),调用w中的槽函数
return a.exec();
}
#pragma once
#include <qthread.h>
class XThread :public QThread
{
Q_OBJECT //加吧,不知道什么意思
public:
void run()
{
for (int x = 0; x <= 1000; x++)
{
Move(x,x);//信号
msleep(100);//休眠100毫米
}
}
signals: //信号声明
void Move(int x, int y);
};
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtWidgetsApplication1.h"
class QtWidgetsApplication1 : public QWidget
{
Q_OBJECT
public:
QtWidgetsApplication1(QWidget *parent = nullptr);
~QtWidgetsApplication1();
private:
Ui::QtWidgetsApplication1Class ui;
public slots: 槽函数创建
void move(int x, int y) { QWidget::move(x, y); } 重载move函数
};
执行顺序
xt.start();
void run(;
Move(x,x);
QObject::connect(&xt, SIGNAL(Move(int, int)), &w, SLOT(move(int, int)));//xt线程中发出信号Move(int, int),调用w中的槽函数
void move(int x, int y) { QWidget::move(x, y); } 重载move函数