QT的点点滴滴.docx

上传人:b****2 文档编号:3119693 上传时间:2023-05-05 格式:DOCX 页数:57 大小:36.82KB
下载 相关 举报
QT的点点滴滴.docx_第1页
第1页 / 共57页
QT的点点滴滴.docx_第2页
第2页 / 共57页
QT的点点滴滴.docx_第3页
第3页 / 共57页
QT的点点滴滴.docx_第4页
第4页 / 共57页
QT的点点滴滴.docx_第5页
第5页 / 共57页
QT的点点滴滴.docx_第6页
第6页 / 共57页
QT的点点滴滴.docx_第7页
第7页 / 共57页
QT的点点滴滴.docx_第8页
第8页 / 共57页
QT的点点滴滴.docx_第9页
第9页 / 共57页
QT的点点滴滴.docx_第10页
第10页 / 共57页
QT的点点滴滴.docx_第11页
第11页 / 共57页
QT的点点滴滴.docx_第12页
第12页 / 共57页
QT的点点滴滴.docx_第13页
第13页 / 共57页
QT的点点滴滴.docx_第14页
第14页 / 共57页
QT的点点滴滴.docx_第15页
第15页 / 共57页
QT的点点滴滴.docx_第16页
第16页 / 共57页
QT的点点滴滴.docx_第17页
第17页 / 共57页
QT的点点滴滴.docx_第18页
第18页 / 共57页
QT的点点滴滴.docx_第19页
第19页 / 共57页
QT的点点滴滴.docx_第20页
第20页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

QT的点点滴滴.docx

《QT的点点滴滴.docx》由会员分享,可在线阅读,更多相关《QT的点点滴滴.docx(57页珍藏版)》请在冰点文库上搜索。

QT的点点滴滴.docx

QT的点点滴滴

QT的点点滴滴收藏

MinGw+CodeBlock+QT4.5

类定义后面要加";"

函数的实现部分,如果定义部分有void,则实现部分不能少;

检查include文件有无少;

 

error:

requestformember`show'in`((MainWindow*)this)->MainWindow:

:

rightform',whichisofnon-classtype`RightForm*'|

"->"与"."问题

 

函数"()"千万不能少;

 

connect中的SLOT里的自定义过程的申明一定要写在privateslots:

(或publicslots:

)下

QTableWidgetItem*newItemName=newQTableWidgetItem(tr("姓名"));

newItemName->setFlags(newItemName->flags()&(~Qt:

:

ItemIsEditable));//网格设置为只读

tblWidgetMingPian->setItem(0,0,newItemName);

newItemName=newQTableWidgetItem(tr("陈林

&(~Qt:

:

ItemIsEditable));

tblWidgetMingPian->setItem(0,1,newItemName);

 

tblWidgetMingPian->verticalHeader()->hide();

tblWidgetMingPian->horizontalHeader()->hide();

tblWidgetMingPian->setRowHeight(0,25);

tblWidgetMingPian->setRowHeight(1,25);

tblWidgetMingPian->setRowCount

(2);connsql.h

tblWidgetMingPian->setColumnWidth(0,60);

tblWidgetMingPian->setColumnWidth(1,100);

if里面的语句要加括号if(条件)

枚举类型的定义:

typedefenum{

nil,

ready,

fired,

exceptional

}Status;

QStringtext=tr("%1%2").arg(i+1).arg(files[i]);

Error:

ISOC++forbidsdeclarationof`NavItem'withnotype

如果出现以上的错误,其中NavItem是自定义类,则需检查有没Include进此类的定义头文件,

并检查头文件的#ifndef中的名称跟其他类有没重复(在复制其它类生成新类时经常会出现这样的错误)

 

=====================================================================================

\mingw\lib\libmingw32.a(main.o):

main.c:

(.text+0x104)||undefinedreferenceto`WinMain@16'|

往pro文件按顺序加入下面三行:

-lmingw32\

-lSDLmain\

-lSDL\

sdl库中文件(sdl.h)里将#include"SDLMain.h"注释掉,否则qDebug(),printf全部无法显示

有可能使用#pragmamessage()造成,方法:

不使用#pragmamessage()

========================================================================

cannotopenoutputfiledebug\umpcphonegui.exe:

Permissiondenied

产生此问题是由于文件umpcphonegui.exe受到保护,写不进去,打开任务管理器结束掉此进程就好了

========================================================

pages.h|16|error:

expectedclass-namebefore'{'token|

||===Buildfinished:

1errors,0warnings===|

处理方法:

没有include进所需的类

 

链接时提示""undefindreferenceto'vtableforxxx'错误的处理方法:

重新makefile试下或

工程文件(.pro)中的HEADERS中没有加入定义该类的.h文件;另一原因,虚函数(或调用的虚函数)定义后没有加"=0";

 

intx,y;

setupUi(this);

this->move(10,60);

this->resize(338,568);

x=this->x()+this->frameGeometry().width();

y=this->y()+20;

//showMaximized();

rightform=newRightForm;

rightform->move(x,y);

 

ERROR:

undefinedreferenceto`RightGpsForm:

:

RightGpsForm(QWidget*)

工程文件(*.pro)文件中的Source没有加入RightGpsForm类实现的.cpp文件

头部定义有误,需检查头部名称跟文件名是否一样;

尝试重编译

error:

ISOC++forbidsdeclarationof`GPSMainWindow'withnotype|

类的定义GPSMainWindow(gpsmainwindow.h)中的

#ifndefMAINWINDOW_H_INCLUDED

#defineMAINWINDOW_H_INCLUDED

头部定义有误,需检查头部名称跟文件名是否一样;

#include时,提示下面的错误:

QList:

Nosuchfileordirectory

解决方法:

Project-buildoptions-选择整个工程(左侧第一项)--切到右边的页"Searchdirectories"

增加"$(#qt4.include)\QtGui\QtCore"

 

QT中的目录用"/"表示

应用程序目录:

QCoreApplication:

:

applicationDirPath().append(tr("/world.png"));

=========================

QSS:

设置TabWidget中的Tab页高度

QTabBar:

:

tab{

height:

14ex;

width:

14ex;

}

 

======================

TRACE_SUBSYSF(MYRUNLEVEL,MYMODULENAME,QString(QObject:

:

tr("测试数据"))<<10);

TRACE_LEVEL=5TRACE_SUBSYS=MAIN/d/study/umpcapp/umpcapp-dev-1.0.0/gpsapp/deb

ug/gpsapp.exe

TRACE_SUBSYSF(5,"GUIAPP",QString(QObject:

:

tr("构造函数创建完毕"))<<10);

TRACE_SUBSYSF(5,"GUIAPP",tr("构造函数创建完毕")<<10);

 

intret=QMessageBox:

:

question(this,tr("提示"),

tr("确定要删除文件吗?

"),

QMessageBox:

:

Yes|QMessageBox:

:

No,

QMessageBox:

:

No);

引用Dll文件(动态链接"qextserialport.dll")时,需在pro里加下面的语句,-l+dll文件名

LIBS+=-lqextserialport

//

//listWidget->addItem("a");

//listWidget->addItem("b");

//QVariantvar;

//var.setValue(newint(789098));

//

//listWidget->item(0)->setData(Qt:

:

UserRole,var);

//

//int*ptr=listWidget->item(0)->data(Qt:

:

UserRole).value();

//qDebug()<<"RecentNoteListForm:

:

RecentNoteListForm:

"<<*ptr<

//deleteptr;

//delete&listWidget->item(0)->data(Qt:

:

UserRole);

删ITEM方法:

把把ITEM的数据挂到指针上,先删ITEM,然后再删除指针

如果发生nosuchfileordirectorynotfind(报QT核心文件错)

有可能是project--properties--projectssettings中的"ThisisacustomMakeFile"没有勾选;

检查.pro文件是INCLUDEPATH+=DEPENDPATH+=有没加入文件所在的目录

检查.pro文件是否引入两个版本不同的相同文件名的文件;

 

============================================

枚举类型做为信号的参数,则需对枚举类型进行注册

在include中

//定义Enum

typedefenum{

ProgressType,

StartType,

SuccessType,

StopType

}SyncMsgType;

//定义结构

typedefstruct//实际使用中可以多增加些结构成员

{

SyncMsgTypemsgtype;

}SyncMsg;

 

Q_DECLARE_METATYPE(SyncMsg)

在应用程序.CPP中

//连接之前再注册

qRegisterMetaType("SyncMsg");

connect(gpssyncthread,SIGNAL(syncMsgNotify(SyncMsg)),

this,SLOT(syncMsgEvent(SyncMsg)));

========================================

QListlistItemDatas;

for(QList:

:

iteratorit=listItemDatas.begin();it!

=listItemDatas.end();++it)

{

(*it)->colName;

}

==================

error:

multipletypesinonedeclaration

自定义的类{}后面没有";"

还有一种可能是pro文件中引用了两次单元文件;

=====================================

expectedunqualified-idbefore"int"

前一句的";"误写为","

======================================

在Bulid工程时,qmake*.pro死循环,原因:

pro文件里同一文件包含两次;

===========================

 

char*constp;p所指向的值不能变;

charcont*p;P所指向的地址不能变;

===========================

error:

`nameLineEdt'wasnotdeclaredinthisscope

函数域没有写;(函数域:

:

函数名())

ifdef/define重覆

 

==============================

intmain(intargc,char*argv[])

{

Q_INIT_RESOURCE(qtdam);

QApplicationapp(argc,argv);

QSplashScreen*splash=newQSplashScreen;

QStringpath=app.applicationDirPath();

IDIOMA*lang=newIDIOMA();

lang->setfile_idioma(path+"/languages.lng");

if(lang->idioma_seleccionado=="Español")

splash->setPixmap(QPixmap(":

/images/splash_espagnol.png"));

else

splash->setPixmap(QPixmap(":

/images/splash.png"));

splash->show();

Qt:

:

AlignmenttopRight=Qt:

:

AlignRight|Qt:

:

AlignTop;

splash->showMessage(lang->leer_idioma("1"),topRight,Qt:

:

white);

MainWindowmainWin;

mainWin.show();

splash->finish(&mainWin);

deletesplash;

returnapp.exec();

}

===============================

函数如果有返回值必须写,否则有造成一些不确定的错误

如:

QStringa()

{

}

QStringstr;

str="abc";

str.append(a());

QMessageBox:

:

warning(this,tr("呼叫"),str,QMessageBox:

:

Ok);

上面的情况,对话框可以出来,但点击对话框中的"确定"后,程序会死在那;

=====================================================

进行信号连接时,要确保连接参数中的对象已经创建过,否则会报保护错;

 

图片加载不了,有可能是QT库中的插件库没有拷贝;

加载路径指令:

QCoreApplication:

:

addLibraryPath(QObject:

:

tr("%1%2plugins").arg(QCoreApplication:

:

applicationDirPath()).arg("/"));

qDebug()<<"插件加载的路径是(QCoreApplication:

:

libraryPaths):

"<

:

libraryPaths()<

有三个插件加载路径1,应用程序路径;2,QTDIR环境路径,3,加入的路径;

=============================================================

 

TRACE_LEVEL=5TRACE_SUBSYS=DB/d/study/umpcapp/umpcapp-dev-1.0.0/debug/gpsapp.exe

 

===============================================

voidDragWidget:

:

mousePressEvent(QMouseEvent*event)

{

QLabel*child=static_cast(childAt(event->pos()));

if(!

child)

return;

QPixmappixmap=*child->pixmap();

QByteArrayitemData;

QDataStreamdataStream(&itemData,QIODevice:

:

WriteOnly);

dataStream<pos()-child->pos());

=================================================

取得应用程序所在路径,注:

结果后面未加"/"

QCoreApplication:

:

applicationDirPath()

===================================================

*.hpp文件,如果改动,Bulid后对改动后代码不起作用,必须ReBulid才可以;

=================================================================

静态成员变更量

aa.h

classAA

{

staticcharp[13];

};

aa.cpp

charAA:

:

p[13];

如果没在cpp中增加"charAA:

:

p[13];",则编译时会提示"undefinedreferenceto...."的错误

====================================================================

b.h接口中引用a.h接口

使用时必须加上

include"a.h"

include"b.h"

否则编译时会出现"如果没在cpp中增加"charAA:

:

p[13];",则编译时会提示"

=========================================================================

单例模式singleton单元要最先初始化(#include放到最前面)

===========================================================

QWidget类以模式窗体显示:

dailPage=newDailForm(0,tel);

dailPage->setWindowModality(Qt:

:

ApplicationModal);

dailPage->show();

================================================================

事件过滤写法:

其实可以通过重载QWidget:

:

keyPressEvent()获得本类(假设是窗体)中的几乎所有键盘事件,但焦点在文本框上,就不属于窗体类啦,所以必须采用在窗体类中添加EventFilters:

CustomerInfoDialog:

:

CustomerInfoDialog(QWidget*parent)

:

QDialog(parent)

{

...

firstNameEdit->installEventFilter(this);

lastNameEdit->installEventFilter(this);

cityEdit->installEventFilter(this);

phoneNumberEdit->installEventFilter(this);

}

 

然后在eventFilter中处理相关键盘事件,通过target判断是否是文本框发生的键盘事件

boolCustomerInfoDialog:

:

eventFilter(QObject*target,QEvent*event)

{

if(target==firstNameEdit||target==lastNameEdit

||target==cityEdit||target==phoneNumberEdit){

if(event->type()==QEvent:

:

KeyPress){

QKeyEvent*keyEvent=static_cast(event);

if(keyEvent->key()==Qt:

:

Key_Space){

focusNextChild();

returntrue;

}

}

}

returnQDialog:

:

eventFilter(target,event);

}

========================================================================

去掉窗体标题栏:

setWindowFlags(Qt:

:

FramelessWindowHint);

==============================================================

ld.execannotfind-lSDL

处理:

环境变量path加入"D:

\QtDevelop\umpcapp\public\SDL-1.2.13\bin"

===========================

环境变量path的设置:

D:

\QtDevelop\umpcapp\public\STLport-5.1.3\bin;

D:

\MinGW\bin;

D:

\Qt\bin;

D:

\QtDevelop\umpcapp\public\SDL-1.2.13\bin;

D:

\QtDevelop\umpcapp\public\SDL_mixer-1.2.8\bin

注:

STLport-5.1.3一定要放在MinGW前面,不然会出现

"QImage:

outofmemory,returningnullimage"的错误;

==================================================

如果要用到STLport库,那么在配置.pro文件时,一定要记住把stlport放在其它库的前面,

下面的写法是正确的:

INCLUDEPATH+=.\

../../public/STLport-5.1.3/stlport\###这句一定要放在前面

../../public/SDL-1.2.13/include\

../../public/common/include\

../../public/qextserialp

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2