本文介绍的是Qt 编程点滴,作为一名新手,我建议必须看一看。编程那些事,只有编程人员自己明白!所以推荐本文。
Qt 编程继续为大家讲解,还是接着文章 Qt 编程点滴 初学者必看 (8),继续介绍,说编程那些细节。由于本话题是一节一节为大家介绍的,所以更多内容请看末尾编辑推荐。
QString怎么转换成char
- QStringstr="123456";
- str.toAscii().data();//thisreturnachar*orconstchar*
- str.toAscii()returnaQByteArray
- QStringStr;//Str="asdfasdfasdf";
- Str->toString().c_str();
调用 Q_DECLARE_METATYPE 报以下错
- ..\..\..\..\Qt\src\corelib\kernel\qmetatype.h||Infunction\\\'void*qMetaTypeConstructHelper(constT*)[withT=ContactsInfoTabItemData]\\\':|
- ..\..\..\..\Qt\src\corelib\kernel\qmetatype.h|152|instantiatedfrom\\\'intqRegisterMetaType(constchar*,T*)[withT=ContactsInfoTabItemData]\\\'|
- src\contactsinfotabitemdata.h|62|instantiatedfromhere|
- ..\..\..\..\Qt\src\corelib\kernel\qmetatype.h|126|error:nomatchingfunctionforcallto\\\'ContactsInfoTabItemData::ContactsInfoTabItemData()\\\'|
如果报以上相类似的错误,请对构造函数中的每个参数赋初值,下面的写法是错误的
- classContactsInfoTabItemData
- {
- public:
- ContactsInfoTabItemData(QStringname,QStringcaption);
- };
- Q_DECLARE_METATYPE(ContactsInfoTabItemData);
正确的写法应为:
- classContactsInfoTabItemData
- {
- public:
- ContactsInfoTabItemData(QStringname=QString(),QStringcaption=QString());
- };
- Q_DECLARE_METATYPE(ContactsInfoTabItemData);
如果程序莫名奇妙的退出,也不报DLL找不到的错误,请仔细检查Main函数体有没直接Return的语句,以造成不提示,直接退出的错误;
在Qt中计算文本的宽度与高度( http://www.cuteQt.com/blog/?p=1029)
- error:incompletetype%u2018nsIDOMComment%u2019usedinnestednamespecifier
产生此错误的原因:
- g++givesthismessageifyou\\\'veforward-declaredatype,likethis
- classMyClass;
- andthenyoutryandaccessoneofitsmembers,likemaybe:
- MyClass::doSomething()
- g++iscomplainingthatithasn\\\'tseenthebodyofclassMyClassyet,soithasnowaytoknowwhatMyClass::doSomethingis.
- (InC++jargon,an"incompletetype"isatypethat\\\'sbeenforward-declaredbutnotyetdefined.)
互斥用法:
- QMutexmutex;
- voidGlobalVar::setUserInfo(constGlobalVar::UserInfo&userInfo)
- {
- QMutexLockerlocker(&mutex);
- this->userinfo=userInfo;
- }
自定义事件方法:
- a.h:
- #include"event.h"
- typedefvoid(EventDelegater::*SetWidgetParent)(QWidget*,QString);
- classtest
- {
- public:
- EventOnSetWidgetParent;
- private:
- inlinevoidinvokeSetWidgetParent(QWidget*parentWidget,QStringwidgetName);
- };
- a.cpp:
- inlinevoidtest::invokeSetWidgetParent(QWidget*parentWidget,QStringwidgetName)
- {
- if(!OnSetWidgetParent.m_EventList.empty())
- {
- //循环事件列表
- Event<SetWidgetParent>::EventIteratoriter;
- for(iter=OnSetWidgetParent.m_EventList.begin();
- iter!=OnSetWidgetParent.m_EventList.end();
- ++iter)
- {
- //调用事件
- InvokeEvent(parentWidget,widgetName);
- }
- }
- }
触发事件:
- invokeSetWidgetParent(NULL,QString());
绑定事件方法:
- test->OnSetWidgetParent.Bind(this,&MainWindow::setWidgetParent);
自定义宏的用法:
0
- ..\..\..\..\Qt\src\corelib\kernel\qmetatype.h||Infunction\\\'void*qMetaTypeConstructHelper(constT*)[withT=ContactsInfoTabItemData]\\\':|
- ..\..\..\..\Qt\src\corelib\kernel\qmetatype.h|152|instantiatedfrom\\\'intqRegisterMetaType(constchar*,T*)[withT=ContactsInfoTabItemData]\\\'|
- src\contactsinfotabitemdata.h|62|instantiatedfromhere|
- ..\..\..\..\Qt\src\corelib\kernel\qmetatype.h|126|error:nomatchingfunctionforcallto\\\'ContactsInfoTabItemData::ContactsInfoTabItemData()\\\'|
小结:本文主要介绍了在Qt 事件的使用,通过Qt 编程点滴介绍,也给自己提高了编程过程中需要注意的细节问题,由于本话题是一节一节为大家展现的,所以更多内容,请看编辑推荐。
转载请说明出处
知优网 » Qt 编程点滴 初学者必看 (9)(qt编程指南)
知优网 » Qt 编程点滴 初学者必看 (9)(qt编程指南)