精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
近期在国产Linux操作下开发一个告警系统,用到QT做界面,部署QT环境遇到了困难,QT环境安装好了,编译时又遇到问题,灵机一动,最终解决问题。
部署环境遇到的困难主要在于找不到合适的源,这个Linux操作下有yum,但是用yum下载安装依赖的包时,提示文件找不到,trying other mirrow,根据网上的的提示把yum相关的一个配置文件删除后,直接提示no package,后来和同事讨论,这是源没有,不是yum软件的事,yum相当于一个客户端,它安装软件要从服务器上下载,源就是指存放包的服务器。后来客户给了个虚拟机,里面有环境才解决了部署问题。Linux的版本分裂确实头疼。
有了环境后,就要用代码试环境,从网上找了个文章,按步骤执行,步骤有:
1、用designer设计界面
2、用uic把界面ui转成代码文件
3、编写配套的对话框文件和主函数文件
4、用qmake -project生成pro项目文件
5、用qmake生成Makefile
6、用make生成可执行文件
这些步骤里比较重要的是第4步,它生成的项目文件,里面指定了有哪些文件参与编译,下面是个示例:
######################################################################
# Automatically generated by qmake (2.01a) ?? 7? 4 20:00:34 2017
######################################################################
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += MyDlg.h untitled.h
FORMS += untitled.ui
SOURCES += main.cpp MyDlg.cpp
内容也好理解,app代表应用程序模板,路径没指定,头文件哪些,窗体界面是哪个,源代码文件哪些。
因为随意从网上找的参考文章,和环境不太一致,在第3步里指定的文件里有些包含头文件语句,比如:
#include <QDialog.h>
这样的代码行,编译就提示找不到头文件错误,没有这个文件,编译失败。
为了解决此问题,先是加指令,比如QT+=Widgets这样的指令,不行。
后来把绝对路径加上,也能通过,不报错。但是想着在profile里添加了环境变量,不应该用绝对路径啊,后来把.h去掉,编译就不报错了。
用.h也是网上作者的原文,这可能是作者写的比较早吧。所以要活学活用,不能生拉硬扯。
SOURCES = addressbook.cpp \
main.cpp
HEADERS = addressbook.h
# install
target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part1
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part1.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part1
INSTALLS += target sources
这个比上面更简单,少了模板和路径部分,但肯定能用。因为是用代码动态创建的界面,里面没用FORMS来指定UI文件。