不同类之间的函数传递

由于是刚学,有一些总结仅限于个人目前阶段的理解,有错误处还望指正


不同类之间的函数传递,有多种方法
方法1:
在一个函数中需要调用别的类的函数,需要通过dwUser进行传递
如以下cbCameraFunc是一个回调用函数,如果想调用类Dialog下的成员函数,可以:


void Dialog::on_Query_channel_state()
{
	pstInParam.dwUser= (LDWORD)this;  // 传入
	...
    
}
void CALLBACK cbCameraFunc(LLONG lLoginID, LLONG lAttachHandle, const NET_CB_CAMERASTATE *pBuf, int nBufLen,LDWORD dwUser)
{	
	Dialog * pThis = (Dialog *)dwUser;  // 传出
	...
}

方法2:可能在另外一个函数中new一个。
如,想在widget的类中定义DHVideoDeviceOper类中的成员函数
class Widget : public QWidget
{
Q_OBJECT

	private:
	DHVideoDeviceOper *m_dh_video;
}

在widget的构造函数中进行初始化
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
m_dh_video = NULL;
}
在widget的成员函数init_video中进行new

void Widget::init_video()
{
	DH_PARAM dh_param;

	dh_param.cb_func_disConnect = NULL;
	dh_param.cb_DecodeVideo = decodeCallback;
	dh_param.nChannelNum = 0;
	...  // dh_param的初始化

	m_dh_video = new DHVideoDeviceOper(dh_param); // new
}

方法3:
class FindDialog : public QDialog
{
Q_OBJECT

	// 在findDialog内部也需要一个指针指向外部的文本框对象
  	QPointer<QPlainTextEdit> m_pText; // 在findDialog内部也需要一个指针指向外部的文本框对象

	//在构造函数中需要有个指针,指向外部文本框对象
 	 explicit FindDialog(QWidget* parent = 0, QPlainTextEdit* pText = 0); // 在构造函数中需要有个指针,指向外部文本框对象

	void setPlainTextEdit(QPlainTextEdit* pText);
	QPlainTextEdit* getPlainTextEdit();
}

void FindDialog::setPlainTextEdit(QPlainTextEdit* pText)
{
    m_pText = pText;
}

QPlainTextEdit* FindDialog::getPlainTextEdit()
{
    return m_pText;
}

QPoint的特点:当它指向的Qt对象被销毁的时候,这个智能指针会被自动设置为NULL,这对于设置松耦合关系特别适合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值