qobject_cast<QPushButton*>(sender()) 简化信号与槽的编写(sender()取得发信号的对象后,就取得了它的全部信息,为所欲为)
2024-09-01 02:43:51
当你觉得写代码是一件重复性极高的工作时,这时你就应该考虑换个方式来实现了。
提高代码效率,减少代码量。
代码片:
- void Widget::onClicked()
- {
- QPushButton* button = qobject_cast<QPushButton*>(sender());
- QRadioButton* radio = qobject_cast<QRadioButton*>(sender());
- if (button)
- {
- QString text = button->text();
- ui->label_2->setText(text);
- }
- else if(radio)
- {
- QString text = radio->text();
- ui->label_2->setText(text);
- }
- }
实例:
1、在Qt creator中拖拽出如下界面:
2、添加槽函数。
- private slots:
- void onClicked();
3、添加信号与槽的关联。
- connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
- connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
- connect(ui->pushButton_3,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
- connect(ui->pushButton_4,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
- connect(ui->radioButton,SIGNAL(clicked(bool)),SLOT(onClicked()));
- connect(ui->radioButton_2,SIGNAL(clicked(bool)),SLOT(onClicked()));
- connect(ui->radioButton_3,SIGNAL(clicked(bool)),SLOT(onClicked()));
- connect(ui->radioButton_4,SIGNAL(clicked(bool)),SLOT(onClicked()));
4、实现槽函数。
- void Widget::onClicked()
- {
- QPushButton* button = qobject_cast<QPushButton*>(sender());
- QRadioButton* radio = qobject_cast<QRadioButton*>(sender());
- if (button)
- {
- QString text = button->text();
- ui->label_2->setText(text);
- }
- else if(radio)
- {
- QString text = radio->text();
- ui->label_2->setText(text);
- }
- }
5、运行截图:
当然了,这里我只是举个例子,在实际的应用中大家可以扩展其功能的。
http://blog.csdn.net/rl529014/article/details/52144009
最新文章
- 步入angularjs directive(指令)--点击按钮加入loading状态
- orcal 操作
- ViewPager+RadioGroup实现标题栏切换,Fragment切换
- iOS 图片轮播图(自动滚动)
- vim——打开多个文件、同时显示多个文件、在文件之间切换
- C#图片处理---基础
- nginx location 的配置
- iPhone socket 编程之BSD Socket篇
- Python安装BeautifulSoup库(Windows平台下)
- JS获取日期和时间
- [React] React Fundamentals: with-addons - ReactLink
- C#—Dev XtraTabControl动态增加Tab和关闭选项卡方法
- Open virtual effects in Ubuntu 12.04LTS
- HDOJ 6069 素数筛法(数学)
- 扩展Spring切面功能
- 简单的面向对象(OO)练习
- Effective STL 为包含指针的关联容器指定比较类型
- 从壹开始微服务 [ DDD ] 之八 ║剪不断理还乱的 值对象和Dto
- Generative Adversarial Nets[Improved GAN]
- Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结和踩坑