qt 编程经验总结文档格式.docx
《qt 编程经验总结文档格式.docx》由会员分享,可在线阅读,更多相关《qt 编程经验总结文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
![qt 编程经验总结文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/28/3b92b050-1392-4b8b-bb3a-48118b889e18/3b92b050-1392-4b8b-bb3a-48118b889e181.gif)
qmake是一个跨平台的程序,使用qmake来构建QT应用程序的步骤:
qmake-project:
收集项目信息,比如源文件、头文件、目标二进制文件、库位置等,生成一个跨平台的.pro项目文件(也可自己编写),这个文件用来生成Makefile文件
qmake(-makefile):
根据.pro文件生成Makefile文件。
接下来就可以运行make工具来编译项目了
.pro文件的格式:
TEMPLATE=app:
指定模板变量,表示生成的Makefile类型。
app(为默认值)建立应用程序的makefile;
lib建立库的makefile;
vcapp建立应用程序的VisualStudio项目文件;
vclib建立库的VisualStudio项目文件;
subdirs创建子目录编译方式的makefile
SUBDIRS=src1:
指定子目录
TARGET=filename:
指定生成的应用程序名(默认为项目名)
DEPENDPATH+=.:
指定程序编译时依赖的相关路径(+=表示追加,=则表示直接指定,下面类同)
INCLUDEPATH+=.:
指定头文件包含路径
DESTDIR+=bin:
指定应用程序放置的目录
UI_DIR+=form:
指定ui界面文件生成的头文件存放目录(ui文件会由uic命令处理并生成ui_*.h头文件)
RCC_DIR+=qrc:
指定qrc资源文件生成的头文件存放目录(rcc命令会将.qrc文件转换成qrc_*.h文件)
MOC_DIR+=moc:
指定moc生成的头文件存放目录(moc命令将含Q_OBJECT的头文件转换成标准.h文件)
OBJECTS_DIR+=obj:
指定目标文件存放的目录
CONFIG+=qtwarn_onrelease:
指定编译配置信息,如qt表示用QT库来编译,warn_on把编译器设为输出警告信息,release编译为发布程序,还有debug、debug_and_release等
message($$(PATH)):
用于qmake构建时产生消息。
$${a}表示读取变量a的字符串,$$(PATH)读取环境变量PATH
win32{}:
添加作用域,把语句放在作用域中,则在其他平台上运行时会忽略
exit():
测试一个文件是否存在
error():
停止运行qmake,并打印一条错误消息
HEADERS+=hello.h:
指定头文件
SOURCES+=filename.cpp:
指定源文件
FORMS+=form/filename.ui:
指定.ui界面设计文件
RESOURCES+=qrc/painter.qrc:
指定.qrc资源文件
数据模型更改时,QlistView如何相应的刷新
intSearchDevicePage:
:
addDeviceIpStrToQListViewWidget(char*ipaddr_string)
{
printf("
addDeviceIpStrToQListViewWidgetipaddr_string(%s)\n"
ipaddr_string);
return_val_if_failed(ipaddr_string!
=NULL,RET_INVALID_PARAMETER);
deviceIpStringList->
append(ipaddr_string);
deviceModel->
setStringList(*deviceIpStringList);
ui.listView_device->
setModel(deviceModel);
return0;
}
QlistView控件如何关联数据模型
QListView是基于Model,而QListWidget是基于Item。
这是它们的本质区别。
往QListView中添加条目需借助QAbstractListModel:
如:
MainWindow:
MainWindow(QWidget*parent):
QMainWindow(parent),
ui(newUi:
MainWindow)
ui->
setupUi(this);
QStringListModel*slm=newQStringListModel(this);
QStringList*sl=newQStringList();
sl->
append("
asdfsadfsa"
);
slm->
setStringList(*sl);
listView->
setModel(slm);
deletesl;
而在QListWidget中添加条目可以直接additem
QListWidgetlist;
list.setViewMode(QListWidget:
IconMode);
list.setResizeMode(QListWidget:
Adjust);
list.setMovement(QListWidget:
Static);
for(inti=0;
i<
100;
i++){
QListWidgetItem*item=newQListWidgetItem(&
list);
QStyle:
StandardPixmapsp=(QStyle:
StandardPixmap)(i%57);
item->
setData(Qt:
DecorationRole,qApp->
style()->
standardPixmap(sp).scaled(QSize(16,16),Qt:
KeepAspectRatio,Qt:
SmoothTransformation));
DisplayRole,QObject:
tr("
Item%1"
).arg(i));
}
QT中QstringList的清空
调用Clear()函数。
QT中的pro文件的编写
我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。
要自己全部写pro文件又有点麻烦,所以,一般都是先运行
qmake-project
来生成基本的pro文件。
例如你有一个工程目录为backup,那么在这个目录下就会生成backup.pro文件。
对一般的工程,我们只需要修改几个基本的常用的选项,下面说说怎么修改。
假设我们有个目录,名字为backup。
下面有a.h,a.cpp,b.h,b.cpp,main.cpp等文件。
首先我们可以在backup目录下运行qmake-project生成backup.pro文件。
888888888888888888888888888888888888888888888888888888888888888888
第一种常用方式:
#模块设置,一般设置为app(生成应用程序,默认),subdirs(生成makefile文件编译subdirs指定的子文件夹),lib(生成库文件)
TEMPLATE=app
#指定生成的应用程序放置的目录
DESTDIR+=../bin
#指定生成的应用程序名
TARGET=pksystem
#添加或减少CONFIG的配置模块,一般采用默认即可,但是除去debug_and_release模块不会生成debug和release文件夹
#CONFIG+=release
CONFIG-=debug_and_release
#指定uic命令将.ui文件转化成ui_*.h文件的存放的目录
UI_DIR+=forms
#指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录
RCC_DIR+=../tmp
#指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录
MOC_DIR+=../tmp
#指定目标文件的存放目录
OBJECTS_DIR+=../tmp
#程序编译时依赖的相关路径
DEPENDPATH+=.formsincludeqrcsources
#头文件包含路径
INCLUDEPATH+=.
#qmake时产生的信息,$${a}读取变量a的字符串,$$(PATH)读取环境变量PATH
#message($$(PATH))
#源文件编码方式
CODECFORSRC=GBK
#Input
#工程中包含的头文件
HEADERS+=include/painter.h
#工程中包含的.ui设计文件
FORMS+=forms/painter.ui
#工程中包含的源文件
SOURCES+=sources/main.cppsources/painter.cpp
#工程中包含的资源文件
RESOURCES+=qrc/painter.qrc
第二种常用方式,用于子文件夹的编译:
#设定模块为子文件夹编译方式
TEMPLATE=subdirs
#子文件夹目录,可用\换行
SUBDIRS=src1\
src2
在backup.pro里已经包含了几个基本的选项,如
TEMPLATE,TARGET,INCLUDEPATH,HEADS,SOURCES等选项。
下面说明一下几个经常修改的选项。
HEADS:
我们工程中头文件如下:
HEADS+=a.h\
b.h
SOURCES:
我们工程中的cpp文件,如下:
SOURCES+=a.cpp\
b.cpp\
main.cpp
上面的两个选项的文件分行是用反斜线\来分行,最后一个不用,如果是同一行的文件可以空格分开,我们在执行qmake-project的时候,qmake已经自动帮我们写上了,省去我们这些麻烦,不过以后要增加文件可以在这里增加。
INCL