当前位置: 首页 > 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的信号与槽机制。

相关文章:

  • DeepSeek开发IP地址查询小工具
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_open_file
  • springboot2.7.18升级springboot3.3.0遇到的坑
  • 生鲜行业智能化供应链解决方案技术白皮书
  • pyside6学习专栏(八):在PySide6中使用matplotlib库绘制三维图形
  • JAVA入门——IO流
  • idea中或pycharm中编写Markdown文件
  • 小结:计算机网路中的性能指标小结
  • Windows提权之第三方提权(九)
  • I/O多路转接之select:定义、原理及应用场景
  • solidwork智能尺寸怎么对称尺寸
  • 【大模型系列篇】Vanna-ai基于检索增强(RAG)的sql生成框架
  • odoo初始化数据库
  • Ubuntu20.04确认cuda和cudnn已经安装成功
  • #渗透测试#批量漏洞挖掘#(0day)某智能终端操作平台前台存在通用SQL注入漏洞(CVE-2022-21047)
  • 3.对象生活的地方—Java环境搭建
  • Spring-全面详解(学习总结)
  • 【AD】3-5 元件在原理图中的基本操作2
  • 从零开始开发纯血鸿蒙应用之语音朗读
  • Gopeed 各种类型的文件资源下载器 v1.6.7 中文版
  • 阳江本地网络平台/百度sem优化师
  • 朔州市建设监理公司网站/seo优化网页
  • 网站联盟是什么/百度竞价账户
  • 手机兼职平台网站开发/网络营销到底是干嘛的
  • 扬州住房和建设局网站/代发百度首页排名
  • h5网站建设价格/全球搜索引擎网站