2020.2.19上课笔记(Qt creator)上

信号与槽

(一些定义啥的就先略过,记点自己认为重要的。)
信号:
声明一个信号,例如:
signals:
void dlgReturn(int); // 自定义的信号
声明一个信号要使用signals关键字。

  1. 在signals前面不能使用public、private和protected等限定符,因为只有定义该 信号的类及其子类才可以发射该信号。
  2. 信号只用声明,不需要也不能对它进行定义实现。
  3. 信号没有返回值,只能是void类型的。
  4. 只有QObject类及其子类派生的类才能使用信号和槽机制,使用信号和槽,还必 须在类声明的最开始处添加Q_OBJECT宏


槽是标准的类成员函数,可以象调用其它函数一样调用它们。
自定义槽的声明:
private slots:
void showValue(int value);
实现:
void Widget::showValue(int value) // 自定义槽
{
ui->label->setText(tr(“获取的值是:%1”).arg(value));
}

  1. 声明一个槽需要使用slots关键字。一个槽可以是private、public或者protected类型的,槽也可以被声明为虚函数,这与普通的成员函数是一样的,也可以像调用一个普通函数一样来调用槽。
  2. 槽的最大特点就是可以和信号关联。
  3. public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。

元对象编译器(meta object complier,MOC)
moc:这一工具扫描源文件中用于创建信号和槽的特殊语句,并将它生
成为有效的C++代码
元对象编译器使用:
1、将自定义类声明放在头文件中,并在第一句加上宏Q_OBJECT
2、使用qmake工具生成makefile,则makefile会自动调用moc工
具对自定义信号和槽进行处理

发布了1 篇原创文章 · 获赞 0 · 访问量 17

猜你喜欢

转载自blog.csdn.net/qq_40582808/article/details/104397590
今日推荐