当前位置: 首页 > news >正文

Qt控件中函数指针使用的最终版本,使用std::function

代码:

class MyWidget : public QWidget 
{
public:std::function<void(QResizeEvent* event)> pf_resizeEvent = 0;
protected:inline void resizeEvent(QResizeEvent* event) override {if (pf_resizeEvent != 0)pf_resizeEvent(event);}
};int main(int argc, char* argv[])
{QApplication a(argc, argv);  //注意,这里是QApplication	 ga.setStdLocaleForUTF8();MyWidget w;QTextEdit txt("Hello Qt" ,&w);w.pf_resizeEvent = [&txt](QResizeEvent* event) {txt.resize(event->size());std::cout << "txt大小随窗体大小改变。\n";};w.show();return a.exec();
}

运行结果:

关键定义:

以下是其它一些事件定义:

    std::function<void(QMouseEvent* event)> pf_mousePressEvent = 0;std::function<void(QMouseEvent* event)> pf_mouseReleaseEvent = 0;std::function<void(QMouseEvent* event)> pf_mouseDoubleClickEvent = 0;std::function<void(QMouseEvent* event)> pf_mouseMoveEvent = 0;std::function<void(QMouseEvent* event)> pf_wheelEvent = 0;std::function<void(QKeyEvent* event)> pf_keyPressEvent = 0;std::function<void(QKeyEvent* event)> pf_keyReleaseEvent = 0;std::function<void(QFocusEvent* event)> pf_focusInEvent = 0;std::function<void(QFocusEvent* event)> pf_focusOutEvent = 0;std::function<void(QEvent* event)> pf_leaveEvent = 0;std::function<void(QResizeEvent* event)> pf_resizeEvent = 0;std::function<void(QMoveEvent* event)> pf_moveEvent = 0;std::function<void(QCloseEvent* event)> pf_closeEvent = 0;

结论,很方便,甚至都不用Qt的信号与槽机制。

http://www.lryc.cn/news/545072.html

相关文章:

  • Java中的泛型类 --为集合的学习做准备
  • 6.6.6 嵌入式SQL
  • 基于C#的CANoe CLR Adapter开发指南
  • 【Qt】MVC设计模式
  • 【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘
  • JAVA面试常见题_基础部分_Dubbo面试题(上)
  • CSS—隐藏元素:1分钟掌握与使用隐藏元素的方法
  • 二、双指针——5. 移动零
  • 论文笔记-NeurIPS2017-DropoutNet
  • php 对接mqtt 完整版本,订阅消息,发送消息
  • 谈谈 ES 6.8 到 7.10 的功能变迁(6)- 其他
  • 【苍穹外卖】问题笔记
  • 脑机接口SSVEP 信号特征提取技术术语
  • 【Veristand】Veristand 预编写教程目录
  • C#光速入门的指南
  • 深入探索 STM32 微控制器:从基础到实践
  • Oracle性能调优(一):时间模型统计
  • 前端Npm面试题及参考答案
  • 记一次线上Tomcat服务内存溢出的问题处理
  • nist关于rsa中p,q的要求
  • Vue3项目如何使用TailWind CSS保姆级教程
  • NO.22十六届蓝桥杯备战|一维数组|七道练习|冒泡排序(C++)
  • Mysql的索引失效
  • 现代前端框架渲染机制深度解析:虚拟DOM到编译时优化
  • set 和 map 的左右护卫 【刷题反思】
  • 【Linux高级IO】多路转接(poll epoll)
  • Linux上用C++和GCC开发程序实现两个不同PostgreSQL实例下单个数据库中多个Schema稳定高效的数据迁移到其它PostgreSQL实例
  • Linux下的网络通信编程
  • Windows在多网络下指定上网接口
  • 网络安全员证书