qt4 消息映射--信号 槽
来源:互联网 发布:unity3d 粒子系统瀑布 编辑:程序博客网 时间:2024/04/30 23:07
1.用图形界面的signal和slot编辑器添加
2.拖到窗体上的控件如pushButton的消息处理函数
右键pushButton选择go to slot
当然也可以不用右键选择go to slot,而是自己写代码添加(就如3)。老外就经常这样干的。
比如拖到窗体上一个按钮叫pushButton
手动声明槽函数
并且发现手动添加和右键go to slot 也添加槽函数,在按钮按下的时候这两个槽函数都会执行。
3. 对于动态创建的对象,如按钮,则没办法用右键go to slots,那么只好手动添加了。
先声明slot,名字任意
SIGNAL(clicked())是QPushButton的信号,QPushButton支持的信号有哪些?看help,如下
有4个信号继承于QAbstractButton,跟踪进去,可以看到QAbstractButton的信号为以下,4个(QAbstractButton还有两个信号是继承于其父类的)
有1个信号继承于QWidget,跟踪进去,可以看到QWidget的信号为以下,1个
有1个信号继承于QObject,跟踪进去,可以看到QObject的信号为以下,1个
信号在各种事件发生的时候由类的对象发出,信号和槽通过connecte绑定,此时槽函数就被执行
和vc中消息和消息处理函数类似,
消息在事件发生时类的对象自动发出,消息和消息处理函数绑定,此时消息处理函数就被执行
而事件可以是用户交互时的鼠标点击拖动等事件,也可以是其他非交互而产生的事件比如某个请求完成时会产生一个事件,由qt/mfc框架定义。
对于connect中的SLOT(btPress())
btPress()是自定义的一个函数。并用private slots修饰(不用slots也可)
有些类本身就已经有了一些槽函数,他们或者是自己的,或者是继承于基类的,比如按钮
问题是,
还不知道类已有的槽函数怎么去重写--如果是虚函数的话,要不要重写?
类已有的槽函数理论上应该是已经和某个信号关联了,而不用手动去connecte也不用在信号和槽编辑器去关联---否则这些槽函数和类已有的普通成员函数或者自定义的成员函数还有什么区别?普通成员函数也可以在connecte里写到slot里面...
4.对于菜单或者工具栏上的按钮的信号和槽的添加如下
右键选中的那项选择go to slot,然后选择triggered(),默认就是
5. 对于鼠标事件,键盘事件,定时器事件的捕获,可以用以下方式
先声明slot,名字为系统预定,不要改变
http://www.yafeilinux.com/?p=43
2.拖到窗体上的控件如pushButton的消息处理函数
右键pushButton选择go to slot
当然也可以不用右键选择go to slot,而是自己写代码添加(就如3)。老外就经常这样干的。
比如拖到窗体上一个按钮叫pushButton
手动声明槽函数
private slots: void pushButton_click( void );实现槽函数
void MainWindow::pushButton_click( void ){ qDebug()<<"dd";}在需要的地方连接信号和槽
connect( ui->pushButton, SIGNAL( clicked() ),this, SLOT( pushButton_click() ) );
并且发现手动添加和右键go to slot 也添加槽函数,在按钮按下的时候这两个槽函数都会执行。
3. 对于动态创建的对象,如按钮,则没办法用右键go to slots,那么只好手动添加了。
先声明slot,名字任意
private slots: void btPress();再实现slot
void MainWindow::btPress(){ QMessageBox box; box.setText("d"); box.exec();}在需要的时候创建bt,并connect
void MainWindow::on_pushButton_clicked(){QPushButton *bt=new QPushButton(this);bt->setText("bt");bt->show();connect(bt,SIGNAL(clicked()),this,SLOT(btPress()));}
SIGNAL(clicked())是QPushButton的信号,QPushButton支持的信号有哪些?看help,如下
Additional Inherited Members
- 4 signals inherited from QAbstractButton
- 1 signal inherited from QWidget
- 1 signal inherited from QObject
有4个信号继承于QAbstractButton,跟踪进去,可以看到QAbstractButton的信号为以下,4个(QAbstractButton还有两个信号是继承于其父类的)
Signals
voidclicked ( bool checked = false )voidpressed ()voidreleased ()voidtoggled ( bool checked )有1个信号继承于QWidget,跟踪进去,可以看到QWidget的信号为以下,1个
Signals
voidcustomContextMenuRequested ( const QPoint & pos )有1个信号继承于QObject,跟踪进去,可以看到QObject的信号为以下,1个
Signals
voiddestroyed ( QObject * obj = 0 )信号在各种事件发生的时候由类的对象发出,信号和槽通过connecte绑定,此时槽函数就被执行
和vc中消息和消息处理函数类似,
消息在事件发生时类的对象自动发出,消息和消息处理函数绑定,此时消息处理函数就被执行
而事件可以是用户交互时的鼠标点击拖动等事件,也可以是其他非交互而产生的事件比如某个请求完成时会产生一个事件,由qt/mfc框架定义。
对于connect中的SLOT(btPress())
btPress()是自定义的一个函数。并用private slots修饰(不用slots也可)
有些类本身就已经有了一些槽函数,他们或者是自己的,或者是继承于基类的,比如按钮
Public Slots
showMenu ()- 5 public slots inherited from QAbstractButton
- 19 public slots inherited from QWidget
- 1 public slot inherited from QObject
问题是,
还不知道类已有的槽函数怎么去重写--如果是虚函数的话,要不要重写?
类已有的槽函数理论上应该是已经和某个信号关联了,而不用手动去connecte也不用在信号和槽编辑器去关联---否则这些槽函数和类已有的普通成员函数或者自定义的成员函数还有什么区别?普通成员函数也可以在connecte里写到slot里面...
4.对于菜单或者工具栏上的按钮的信号和槽的添加如下
右键选中的那项选择go to slot,然后选择triggered(),默认就是
5. 对于鼠标事件,键盘事件,定时器事件的捕获,可以用以下方式
先声明slot,名字为系统预定,不要改变
private slots: void mouseMoveEvent(QMouseEvent *); void keyPressEvent(QKeyEvent *); void timerEvent(QTimerEvent *);再实现slot
void MainWindow::mouseMoveEvent(QMouseEvent *m){int x = m->pos().x();int y = m->pos().y();//获取鼠标现在的位置坐标ui->pushButton->setText(tr("mouse coordinator is (%1,%2)").arg(x).arg(y));}void MainWindow::keyPressEvent(QKeyEvent *k){if(k->key() == Qt::Key_A) //判断是否是A键按下{;}} void MainWindow::timerEvent(QTimerEvent *t) //定时器事件 { if(t->timerId()==id1){ QMessageBox::warning(this,"title",tr("timer%1").arg(t->timerId())); //killTimer(t->timerId()); } else if(t->timerId()==id2){ QMessageBox::warning(this,"title",tr("timer%1").arg(t->timerId())); //killTimer(t->timerId()); } else { QMessageBox::warning(this,"title",tr("timer%1").arg(t->timerId())); //killTimer(t->timerId()); } }
http://www.yafeilinux.com/?p=43
- qt4 消息映射--信号 槽
- QT4 自定义槽和信号
- QT4 自定义槽和信号
- ]QT4 自定义槽和信号
- qt4:quit.cpp 使用信号和槽
- QT4 自定义槽和信号(转)
- QT4 自定义槽和信号(转)
- 【转】QT4 自定义槽和信号
- Qt4之信号与槽机制
- qt4典型的信号槽的实现
- qt4:lay.cpp 布局、信号、槽的综合使用
- The Book of QT4 翻译:1.3 信号和槽
- 学习笔记之qt4的信号与槽机制
- Qt4线程间的信号与槽通信
- QT4和QT5信号和槽的区别
- Qt4之消息对话框
- 消息映射
- 消息映射
- ubuntu11.04使用U盘启动或安装的方法
- QtCreator + QT + VTK in Linux
- qt4 定时器
- 11.27
- 学习资源
- qt4 消息映射--信号 槽
- 详解警告“unreferenced local variable”
- [对比]Android的差异设计和iOS的统一设计规范
- 二叉查找树(binary search tree)的实现算法分析
- 三十六计之攻战计
- Oracle存储过程的格式
- 快考单片机了。。
- vb多线程
- C++编程对缓冲区的理解