• 5381阅读
  • 8回复

[提问]QT是禁止自定义公有的信号吗? [复制链接]

上一主题 下一主题
离线tthheedhz
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-14
public signals:

编译出现错误。是不允许定义公有的信号吗?
离线benbenmajia

只看该作者 1楼 发表于: 2012-05-14
你看过关于信号槽该怎么定义么?去google吧
安然.....
离线benbenmajia

只看该作者 2楼 发表于: 2012-05-14
声明信号的关键字为,signals:
安然.....
离线jdwx

只看该作者 3楼 发表于: 2012-05-14
啥时候信号能私有了?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线benbenmajia

只看该作者 4楼 发表于: 2012-05-14
回 3楼(jdwx) 的帖子
有点小忧伤
安然.....
离线uidab

只看该作者 5楼 发表于: 2012-05-14
#include <QObject>

class Counter : public QObject
{
     Q_OBJECT

public:
     Counter() { m_value = 0; }

     int value() const { return m_value; }

public slots:
     void setValue(int value);

signals:
     void valueChanged(int newValue);

private:
     int m_value;
};
看帮助
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线tthheedhz
只看该作者 6楼 发表于: 2012-05-14
引用第3楼jdwx于2012-05-14 16:12发表的  :
啥时候信号能私有了?


默认是protected的。
离线tthheedhz
只看该作者 7楼 发表于: 2012-05-14
引用第5楼uidab于2012-05-14 16:22发表的  :
#include <QObject>
class Counter : public QObject
{
     Q_OBJECT
.......

那么,能否做到如下?:
Counter co;
emit co.valueChanged(1);
离线kimtaikee

只看该作者 8楼 发表于: 2012-05-14
摘自Qt源码:
  1. #ifndef Q_MOC_RUN
  2. # if defined(QT_NO_KEYWORDS)
  3. #  define QT_NO_EMIT
  4. # else
  5. #   define slots
  6. #   define signals protected
  7. # endif
  8. # define Q_SLOTS
  9. # define Q_SIGNALS protected
  10. # define Q_PRIVATE_SLOT(d, signature)
  11. # define Q_EMIT
  12. #ifndef QT_NO_EMIT

好好看看源码比什么都强!

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