通过线程实时改变窗口状态

#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函数

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值