qt怎么部属

qt怎么部属,第1张

华开发

原创

关注

2点赞·1821人阅读

Qt程序编写完成后,我们应该怎么给其他人安装呢?其实我们只需要知道Qt程序所依赖的动态库就可以直接拷贝将exe和动态库拷贝到其他人电脑上直接运行(也就是传说中的绿色免安装版)。Qt所依赖的动态库我们通过部署来获取。Qt程序部署有两种方式,一种通过QtCreator获取,另外一种是在cmd窗口使用windeployqt命令获取。

1QtCreator部署exe程序

我们首先新建一个Test工程(如果对如何创建工程不清楚可参考Qt第一个例程)。

首先我们先不部署看一下生成目录中包含哪些文件

在该文件夹中实际上只有Textexe有用,其他都为中间文件可以删除。

接下来我们看如何使用QtCreator部署程序。新建完成后构建->部署项目”Test”按钮是不可用状态,需要我们先设置一下部署流程。

点击左侧项目按钮,主窗口切换到构建界面。再次点击左侧Run按钮,主窗口就切换到运行设置界面。在此界面,点击添加部署步骤,选择自定义处理步骤。

在命令编辑框可以输入windeployqt。

在参数编辑框中点击右侧的A->B按钮。

这时会d出参数的一个选择界面。在这个地方我选择了CurrentRun:Executable:FilePath这个参数。在界面下方我们可以看到这个参数代表的是E:/qt/build-Test-Desktop_Qt_5_11_2_MSVC2017_64bit-Debug/debug/Test,也就是执行程序所在路径和执行程序的名称。

但实际上我们还需要在该参数后面加个exe,表示这是执行文件。在有的版本中可以找到直接带exe的参数,但本人使用的Qt 5112中没有找到。如果有知道的朋友可以留言告知一下。

到这个时候我们的部署步骤就添加完成。接下来我们再找到编辑界面。只需点击左侧的编辑按钮即可。

然后在项目上右键点击,选择部署按钮。

在编译输出窗口看到以下信息说明部署完成。

接下来我们再看一下构建目录下的文件。这个时候我们发现这个目录下会多出很多dll文件。这就是我们执行文件所以来的动态库。我们把这个文件夹拷贝给用户,用户点击exe就可以运行了。但这种方式有个弊端就是会有很多中间文件,比如mainobg,mainwindowobj等。我们需要把这些文件删除或者写个脚本删除这个文件。

2cmd窗口部署exe程序

在cmd窗口部署exe程序之前,我们需要将windeployqt所在路径配置到环境变量中。

右键点击计算机,选择属性,d出下面的对话框,选择高级系统设置。

在系统属性中选择高级->环境变量。

选择系统变量的Path变量,点击编辑。

将windeployqt所在路径添加到变量值中(需要注意要在路径前添加;)。Windeployqt默认路径为C:\Qt\Qt5112\5112\msvc2017_64\bin。C:是我的Qt安装盘符,这个需要根据大家自己的路径选择。msvc2017_64是我使用的编译器。每个编译器下都有自己的Windeployqt。添加完成后点击确定按钮。准备工作已经做完了,我们可以开始部署程序。

首先我们将exe程序单独拷贝的一个文件夹中。

我们使用快捷键win+R打开运行界面,输入cmd点击回车。

还有另外一种方法是直接在文件夹路径位置输入cmd,点击回车。

这时打开的路径就是exe所在路径,否则需要先跳转到exe所在路径。

在cmd窗口输入windeployqt Testexe,然后点击回车。

看到如下信息就说明部署已经完成。我们只需要将此文件夹拷贝给用户即可。

3总结

Qt程序部署看似两种方法其实核心是一致的,都是调用windeployqt生成所需动态库,只不过是使用Qt Creator方法配置完成后只需点击按钮即可,更为方便一些。

多文档可以 QMainWindow QMdiArea QWidget QApplication,用这些来替代,至于文档类,自己实现吧,没有现成的Doc-View框架,不过有Model View框架,概念不太一样

窗口(QWidget及其派生类)的刷新在paintEvent()函数中实现,字符串用QString,默认Unicode编码

多语言参考linguist 以及QObject::tr() ,具体的自己去看文档吧,这些信息足够你找到入口了

设置windows窗口图标的方法:

this->(QIcon("myapppng"));

设置应用程序的方法:

1、在你的工程目录创建一个txt文档,写入:

IDI_ICON1ICON"appico"

2、重命名改文件为rc,比如apprc

3、在工程pro中添加如下代码

RC_FILE=apprc

4、拷贝一张ico的至工程目录,命名为appico,编译即可。

先下:read修复工具,修复一下,试试!

这是你下载的“游戏或软件”与电脑“内存”有冲突

1。游戏或软件带木马或病毒!(杀毒软件,全盘扫描与自定义扫描,重启后,隔离区,彻底删除)

2。游戏或软件与其它游戏有冲突!(同类软件,互不兼容!开始菜单,程序,卸载,只留一个游戏)

3。游戏或软件与其它软件冲突!(如:冲突播放器或某些杀毒软件过于敏感,卸载播放器或杀毒,重装游戏)

4。游戏或软件版本电脑显卡不支持!(下载:驱动人生或驱动精灵,更新显卡驱动)

5。游戏或软件缺少必要的dll文件或游戏补丁!(dll文件,360系统急救箱,dll文件恢复,添加恢复!游戏补丁建议去:官网下载!)

6。游戏或软件带恶评插件!(可以用360安全卫士或金山卫士,或可牛免费杀毒,扫描插件,立即清理)

7。游戏或软件版本,不适合当前系统运行!(开启“兼容模式”或更换游戏版本试试,建议去下载:正规官网游戏!)

8。游戏或软件有bug或错误或带可疑启动木马!(试试:360系统急救箱,系统修复,全选,立即修复!网络修复,开始修复!

再点:开始急救!重启后,点开“文件恢复区”,全选,彻底删除文件)!

9。再不行,开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入(复制即可) :

for %1 in (%windir%system32ocx) do regsvr32 /s %1

粘贴,回车,再输入:

for %1 in (%windir%system32dll) do regsvr32exe /s %1

回车!直到屏幕滚动停止为止,重启电脑!

10。实在不行,还原系统

这也是从其他地方借鉴来的,希望对你有帮助

qassistant中有对QApplication的详细说明。

对于QApplication它有如下说明:

It initializes the application with the user's desktop settings such as palette(), font() and doubleClickInterval() It keeps track of these properties in case the user changes the desktop globally, for example through some kind of control panel

It performs event handling, meaning that it receives events from the underlying window system and dispatches them to the relevant widgets By using sendEvent() and postEvent() you can send your own events to widgets

It parses common command line arguments and sets its internal state accordingly See the constructor documentation below for more details

It defines the application's look and feel, which is encapsulated in a QStyle object This can be changed at runtime with setStyle()

It specifies how the application is to allocate colors See setColorSpec() for details

It provides localization of strings that are visible to the user via translate()

It provides some magical objects like the desktop() and the clipboard()

It knows about the application's windows You can ask which widget is at a certain position using widgetAt(), get a list of topLevelWidgets() and closeAllWindows(), etc

It manages the application's mouse cursor handling, see setOverrideCursor()

大意是它要负责初始化应用、处理窗口事件、分析命令行的参数、定义程序外观、字符串的本地化、提供了一些魔术对象、了解窗口的基本信息、管理程序的鼠标指针处理等。要具体弄清楚的话就读qassistant。

#include "mainwindowh"#include #include int main(int argc, char argv[]){ QApplication a(argc, argv); if (NULL != argv) { // 主函数入口,默认都带有一个参数,就是本程序的名字 qDebug()

以button1为例。

QPushButton button1=new QPushButton("show",window);

button1->move(0,0);

这样它就会在window这个QWidget上的左上角显示出来,其它button也可以指定父窗口显示。使用这种方法,按钮间的排列需要自己去计算。

以上就是关于qt怎么部属全部的内容,包括:qt怎么部属、MFC程序向QT程序的移植,希望给一些思路、在Qt中如何设置Windows应用程序的图标和窗口图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9676337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存