• 668阅读
  • 11回复

[提问]如何用一个变量值改变时emit 一个signals [复制链接]

上一主题 下一主题
离线wcrqpdb
 

只看楼主 倒序阅读 楼主  发表于: 2023-09-03
请问 如何用一个变量值改变时emit 一个signals
离线fsu0413

只看该作者 1楼 发表于: 2023-09-03
变量做不到,只能属性
离线圣域天子

只看该作者 2楼 发表于: 2023-09-03
是不是想根据不同的变量名(函数名),动态调用不同的slot方法?
离线wcrqpdb

只看该作者 3楼 发表于: 2023-09-03
回 圣域天子 的帖子
圣域天子:是不是想根据不同的变量名(函数名),动态调用不同的slot方法?
 (2023-09-03 17:33) 

不是,比如一个温度变量,数值变化就会发一个信号
在线clickto

只看该作者 4楼 发表于: 2023-09-03
回 wcrqpdb 的帖子
wcrqpdb:不是,比如一个温度变量,数值变化就会发一个信号 (2023-09-03 17:47) 

那你在数值变化的时候手动发一个信号就可以了
离线沉默小ai

只看该作者 5楼 发表于: 2023-09-04
QT6,有这样的系统,QT5也有,叫做属性.
离线圣域天子

只看该作者 6楼 发表于: 2023-09-04
是啊,这跟emit signal 没有什么关系的
离线wcrqpdb

只看该作者 7楼 发表于: 2023-09-04
回 沉默小ai 的帖子
沉默小ai:QT6,有这样的系统,QT5也有,叫做属性. (2023-09-04 08:41) 

能说清楚点吗
离线realfan

只看该作者 8楼 发表于: 2023-09-04
回 wcrqpdb 的帖子
wcrqpdb:
能说清楚点吗

     Q_PROPERTY(double temp MEMBER _temp NOTIFY tempChanged)

signals:
     void tempChanged(double d);

private:
     double  _temp = 0;

====================
setProperty("temp", 50); 时,emit tempChanged信号


离线wcrqpdb

只看该作者 9楼 发表于: 2023-09-05
回 realfan 的帖子
realfan:     Q_PROPERTY(double temp MEMBER _temp NOTIFY tempChanged)
signals:
     void tempChanged(double d);
....... (2023-09-04 11:16) 

是数值到50时发信号吗?有没有数值只要有变化就发信号呢
离线realfan

只看该作者 10楼 发表于: 2023-09-06
回 wcrqpdb 的帖子
wcrqpdb:是数值到50时发信号吗?有没有数值只要有变化就发信号呢 (2023-09-05 14:19) 

50是随便写的一个数字,只要值变化了,就会发射tempChanged信号
离线dbzhang800

只看该作者 11楼 发表于: 2023-09-07
都是程序员,在代码世界里,没有什么东西是自动的。要什么效果,直接写就是了。

比如,Qt手册中的例子

  1. class MyClass : public QObject
  2. {
  3.      Q_OBJECT
  4.      Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged)
  5. public:
  6.      MyClass(QObject *parent = nullptr);
  7.      ~MyClass();
  8.      enum Priority { High, Low, VeryHigh, VeryLow };
  9.      Q_ENUM(Priority)
  10.      void setPriority(Priority priority)
  11.      {
  12. if (priority == m_priority)
  13.     return;
  14.          m_priority = priority;
  15.          emit priorityChanged(priority);
  16.      }
  17.      Priority priority() const
  18.      { return m_priority; }
  19. signals:
  20.      void priorityChanged(Priority);
  21. private:
  22.      Priority m_priority;
  23. };




快速回复
限100 字节
 
上一个 下一个