导航:首页 > 编程语言 > qt编程指令创建

qt编程指令创建

发布时间:2022-08-28 09:20:21

Ⅰ 我用QT进行编程,但是make命令和mingw32-make命令和nmake命令都不是内部指令,是什么回事呢

添加3个环境变量即可,依次如下:

1)QTDIR用户变量(假设你的Qt安装在D盘)

在Administration的用户变量中,新建一个变量“QTDIR”,路径是“;D:Qt2010.05qt;”

我估计你的问题主要是在:mingw32-make.exe的路径没有配置,即为path系统变量添加

“;D:Qt2010.05mingwin;”

Ⅱ Qt入门hello程序

那是因为你选了git,在哪一个选项中,选NONE就可以。
1、建立一个文件夹,比如E:\Hello;然后在Hello里面新建一个记事本,重命名为hellp.cpp。这样就可以用记事本编辑程序了。编辑好了以后,保存。
2、在 开始(屏幕左下角那个),然后找到Qt Creator的目录,找到Qt Command Prompt(我相信你能找到)
3、打开Qt Command Prompt
用cd命令,切换到Hello目录下:
具体命令为:cd E:\Hello
4、先生成工程Hello.pro:
具体命令为: qmake -project
5、然后编译工程生成Makefile:
qmake Hello.pro
6、最后编译生成可执行程序:
mingw32-make
这时候就可以在debug文件夹下找到新生成的程序了。
7、双击生成的hello.exe,就可以运行了。
注意此时不要关闭Qt Command Prompt。不然会提示缺少DLL。
如果要发布程序,你就得复制相应的DLL到程序所在的文件夹。

Ⅲ 使用Qt如何编写模块化插件式应用程序

本文介绍的是,对于插件式应用程序的讲解,也很详细,我们废话不多说,先看内容。动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来。比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会引起其它模块和主程序的重新编译,这点对于大系统的构建来说更加实用。另一方面,对于商业目的明显的企业,各模块可以独立设置访问权限,开发成员只能访问自己负责的模块,其它模块是不能也不给看到的,这样减少了整个系统泄漏技术的风险。一、动态链接库技术概况动态链接库技术用得很多。事实上,整个Windows就是由一个个动态链接库(DLL)构建起来的,不管是系统内核,或是系统调用的API封装,还是通用工具(如控制面板、ActiveX插件等),都是一个个动态链接库文件。动态链接库并不是微软独有的技术,它是软件工程发展到一定阶段的必然产物。在类Unix系统中,这种二进制可执行模块技术不叫动态链接库,而被称为共享对象或共享库,后缀名一般为.so(即Share Object的简写)。为简便,下文将统称这种动态链接的技术为DLL或共享库。其实,DLL文件跟普通的可执行文件差别不大,都是可执行文件嘛,装载到进程空间后,都是一些机器指令(函数代码)、内存分配(变量)等。在Windows中,这些可执行文件被称作PE/COFF格式文件,在linux则称为ELF文件。从CPU的角度看来,程序中的各个要素,不管是函数还是变量,它们都是一个个地址,函数是入口地址,变量是访问地址;而C++的所谓类或对象,最后也被编译器肢解成了一个个变量和函数代码(这里是形象的说法,严谨技术解说请搜索C++对象模型)。DLL的装载(指导入进程空间,然后执行)方式比可执行文件的装载稍微复杂,因为它把模块链接过程推迟到了运行时。在动态链接库的装载过程中,首要任务就是解决地址重定向问题。我们知道,DLL装载到进程空间的位置(基址)是不确定的(动态装载嘛),即使DLL内部使用的函数调用和全局变量引用,在装载时都要重新计算其地址。Windows采用基址重定向(Rebasing)技术解决这一问题,而Linux采用地址无关代码(PIC,通过GOT和PLT表实现)技术。这两种技术各有优缺点。二、Qt中的动态链接库编程使用C++面向对象的类编写DLL是要注意很多细节的,主要是二进制(ABI)兼容问题。COM是一个很成功的例子,只要符合COM的规范,我们就能编写出很好的DLL来,然而COM是微软私生的,要想跨平台,我们还得另找它路。Qt的跨平台特性同样令人(至少是我)兽血沸腾。如果你认为QT仅仅是一个跨平台界面库,那就小看它了。我要说的是,它不但是一个通用的跨平台的面向对象的应用程序接口库(包括GUI、数据库、网络、多线程、XML、数据容器和算法等,常用的编辑资源都有封装,就是说,这些都可以跨平台,而不仅仅是界面),更是一种C++语言的扩展,一种编程平台和应用程序框架。信号和槽的机制简化了对象之间的通信,比MFC的消息映射直观多了;界面的布局管理机制使开发人员可以很轻松地编出优雅的窗体;界面语言翻译机制也很方便实用;QObject容器管理可以看到Qt在内存管理方面的努力;扩展的foreach循环结构也向现代语言靠拢……Qt的跨平台特性很好,对于本文的主题——动态链接库的支持也很好。QT对各种平台的动态链接库编程技术都有包装,QT把这种技术统一命名为共享库(Shared Libraries)。通过使用Qt包装过的类和宏,可以编写跨平台的共享库和插件——当然,这只是源代码级别的跨平台,你不要指望用MSVC编译出来的DLL,能集成到ARM平台的Linux程序上面——这是一个很美很美的理想哦。QT使用以下两个宏来实现符号(函数或全局变量/对象)的导出和导入(跨平台不能用def文件了):Q_DECL_EXPORT // 必须添加到符号声明中(共享库项目) Q_DECL_IMPORT // 必须添加到符号声明中(使用共享库的客户项目) Q_DECL_EXPORT // 必须添加到符号声明中(共享库项目)Q_DECL_IMPORT // 必须添加到符号声明中(使用共享库的客户项目)QT使用 QLibrary 类实现共享库的动态加载,即在运行时决定加载那个DLL程序,插件机制使用。三、QT共享库和插件范例本节通过例子,实现一个共享库和一个插件。在Windows平台上开发,使用VS2005编译,QT库版本为4.6.2。本例了将编写以下三类项目:Bil 项目:共享库项目,输出Bil.dll和Bil.lib,基础接口类库,定义一个公共的接口IAnimal(抽象类),供客户项目和插件项目使用;Plugin 类项目:插件类项目,现编写BilDog和BilPanda两插件项目,实现IAnimal的功能,供客户项目加载和测试。两项目输出BilDog.dll和BilPanda.dll;Test 项目:客户应用程序项目,输出Test.exe,界面中可以选择要加载的Animal插件,然后调用Animal的功能函数,完成测试;1. 编写共享库——Bil 项目的实现该项目定义一个抽象的 IAnimal 类作为导出接口,供客户项目和插件项目使用。项目类型为共享库,将生成Bil.lib和Bil.dll两个文件,Bil.lib供Plugin项目和Test 项目引用,而Bil.dll将给Test.exe运行时动态加载。新建一个头文件Bil.h,输入如下代码:view plain to clipboardprint? #ifndef BIL_H #define BIL_H #include <Qt/qglobal.h> // 定义BIL_SHARE,使用者可以不用再处理符号的导入和导出细节 #ifdef BIL_LIB # define BIL_SHARE Q_DECL_EXPORT #else # define BIL_SHARE Q_DECL_IMPORT #endif #endif // BIL_H #ifndef BIL_H #define BIL_H #include <Qt/qglobal.h> // 定义BIL_SHARE,使用者可以不用再处理符号的导入和导出细节 #ifdef BIL_LIB # define BIL_SHARE Q_DECL_EXPORT #else # define BIL_SHARE Q_DECL_IMPORT #endif #endif // BIL_H 你现在可能不知道BIL_SHARE宏有何用处。没关系,请继续看下面的IAnimal接口定义代码:view plain to clipboardprint? #ifndef IANIMAL_H #define IANIMAL_H #include "Bil.h" class BIL_SHARE IAnimal { public: IAnimal(); virtual ~IAnimal(); public: virtual void Eat() = 0; virtual void Run() = 0; virtual void Sleep() = 0; }; #endif // IANIMAL_H #ifndef IANIMAL_H #define IANIMAL_H #include "Bil.h" class BIL_SHARE IAnimal { public: IAnimal(); virtual ~IAnimal(); public: virtual void Eat() = 0; virtual void Run() = 0; virtual void Sleep() = 0; }; #endif 现在知道BIL_SHARE宏的妙用了吧。BIL_SHARE宏会根据项目编译选项BIL_LIB有没有定义,自动声明IAnimal是导出类,还是导入类。所以,使用BIL_SHARE宏,我们只需要向IAnimal插件的开发者提供同一份IAnimal定义文件(IAnimal.h)即可。当然,我们得先在Bil项目的编译选项中定义BIL_LIB宏,使得在Bil项目内,BIL_SHARE就是导出符号的声明。插件项目就不要定义BIL_LIB了,因为在Animal插件项目中,IAnimal是导入符号。编译选项如何定义宏?如果使用Visual Studio工程文件,依次展开:项目属性->配置属性->C/C++->预处理器,在预处理器定义中添加宏BIL_LIB即可;如果是QT工程文件,请在QT工程文件Bil.pro中加入如下定义:DEFINES += BIL_LIB DEFINES += BIL_LIB 在IAnimal接口中,我们定义了三个纯虚函数Eat()、Run()和Sleep(),表示吃、跑和睡眠的动作,这是抽象的,因为不同的动物有不同的吃相和睡眠姿态,而世间的动物何止千千万——无所谓,让这些具体动物的不同表现交给IAnimal插件的编写者发挥吧——这就是接口的魅力,加上插件的思想,整个应用程序就变成开放的,可扩展的了!继续编写Anima类的实现文件Anima.cpp:view plain to clipboardprint? #include "IAnimal.h" IAnimal::IAnimal() { } IAnimal::~IAnimal() { } #include "IAnimal.h" IAnimal::IAnimal() { } IAnimal::~IAnimal() { } 虽然只实现了构造和析构函数,并且什么工作也不做,但这是必要的,我们暂时不要使用内联的构造和析构函数,否则在插件项目实现IAnimal时可能会出现链接错误。好了,我们开始编译吧,生成整个Bil项目。最终我们得到两个输出文件:Bil.lib 和 Bil.dll。我们向Animal插件开发者提供:两个头文件:Bil.h 和 IAnimal.h两个库文件:Bil.lib 和 Bil.dll下面的插件类项目和客户项目就是依赖这些文件实现的,也许你更愿意把Bil看作是一个通用的DLL类库,就像QT或MFC一样——事实上也是如此,Bil就是这样一个动态的共享类库。2. 编写Animal插件——BilDog和BilPanda项目的实现现在,让我们来实现两个小插件。BilDog插件很简单,只是汇报下“我是Dog,我正在啃骨头”;BilPanda也是如此——这里仅仅是测试而已,实现的项目中,你可以尽情的发挥——没错,是在遵循IAnimal接口的前提下。创建BilDog项目,把Bil项目输出的Bil.h、IAnimal.h和Bil.lib加入到工程。创建Dog类的头文件Dog.h: view plain to clipboardprint? #ifndef CLASS_DOG_H #define CLASS_DOG_H #include "IAnimal.h" class Dog : public IAnimal { public: Dog(void); virtual ~Dog(void); public: virtual void Eat(); virtual void Run(); virtual void Sleep(); }; #endif // CLASS_DOG_H #ifndef CLASS_DOG_H #define CLASS_DOG_H #include "IAnimal.h" class Dog : public IAnimal { public: Dog(void); virtual ~Dog(void); public: virtual void Eat(); virtual void Run(); virtual void Sleep(); }; #endif 创建Dog类的实现文件Dog.cpp:view plain to clipboardprint? #include <QtGui/QMessageBox> #include "Dog.h" Dog::Dog(void) { } Dog::~Dog(void) { } void Dog::Eat() { QMessageBox::information(NULL, "Hello", "Dog eating ..."); } void Dog::Run() { QMessageBox::information(NULL, "Hello", "Dog running ..."); } void Dog::Sleep() { QMessageBox::information(NULL, "Hello", "Dog sleeping ..."); } #include <QtGui/QMessageBox> #include "Dog.h" Dog::Dog(void) { } Dog::~Dog(void) { } void Dog::Eat() { QMessageBox::information(NULL, "Hello", "Dog eating ..."); } void Dog::Run() { QMessageBox::information(NULL, "Hello", "Dog running ..."); } void Dog::Sleep() { QMessageBox::information(NULL, "Hello", "Dog sleeping ..."); } 调用QT的QMessageBox::information()函数弹出一个信息提示框。还有一个非常重要的工作,我们得提供一个能够创建(释放)Animal具体对象(这里是Dog)的接口,并且把这些函数导出,让主程序(Test.exe)能够解析这个接口函数,动态创建Animal对象,并访问其功能。新建BilDog.h文件,输入下面的代码:view plain to clipboardprint? #ifndef BILDOG_H #define BILDOG_H #include "Dog.h" // extern "C" 生成的导出符号没有任何修饰,方便主程序找到它 extern "C" { Q_DECL_EXPORT IAnimal * CreateAnimal(); Q_DECL_EXPORT void ReleaseAnimal(IAnimal * animal); } #endif // BILDOG_H #ifndef BILDOG_H #define BILDOG_H #include "Dog.h" // extern "C" 生成的导出符号没有任何修饰,方便主程序找到它 extern "C" { Q_DECL_EXPORT IAnimal * CreateAnimal(); Q_DECL_EXPORT void ReleaseAnimal(IAnimal * animal); } #endif 这两个函数的工作很简单,直接创建和释放对象即可。

Ⅳ 命令行编译qt程序 有几种方式

一、环境配置

1
要想使用Qt进行命令行编译,环境配置是必不可少的一步。环境配置好以后,我们才能使用相应的qmake,nmake等命令,并且链接到编译程序时所需要的头文件和库文件。
小提示:为了帮助大家解决环境配置的问题,新版Qt已经自带了相应的批处理文件,我们只要在编译前执行对应的批处理文件即可。

2
首先,我们在命令行编译时需要运行qmake.exe,因此我们需要将该文件的路径添加到PATH变量中。要想做到这一点,我们只需要执行Qt安装目录下的
Qt5.5.1\5.5\msvc2013\bin\qtenv2.bat 批处理即可。

3
其次,在编译过程中,我们还需要用到nmake命令,并且链接相应的头文件和库文件,以生成最终的可执行程序。要想做到这一点,我们只需要执行VS安装目录下的
D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat批处理即可。
注意:由于我安装的是Qt for VS2013 32位版,所以运行的是vcvars32.bat,如果你安装的是64位版,请运行vcvars64.bat。

4
至此,环境配置就大功告成了。关于这个环境配置,需要特别指出的是,这个配置是临时性的,只在当前命令行窗口有效;也就是说,你关闭命令行窗口后,均需要重新运行相应的批处理文件。
END
二、命令行编译

首先,将以上两个批处理文件复制到要编译的工程目录中。

然后,点击菜单“文件”-“打开命令提示符”,在该目录下打开命令行窗口。

执行批处理文件qtenv2.bat。注意,由于该批处理会跳转到Qt安装目录,我们执行完毕后需要回到我们的当前目录(我这里由于Qt安装目录与当前目录不在同一个磁盘,只要切换磁盘便回到当前目录了)。

执行批处理文件vcvars32.bat。

下面,正式开始编译。首先,生成工程文件。键入命令:
qmake -project
说明:生成的工程文件名会与你当前的目录名同名。例如,我当前的目录名为test,生成的工程名则为test.pro。

接着,输入qmake test.pro,生成相应的Makefile文件。

最后,键入nmake,生成最终的可执行文件。

Ⅳ qt编程问题

1、关联Qt库。如果是分别安装的Qt Creator和Qt库,而不是安装集成Qt Creator和Qt库的SDK,则需要手动关联Qt库。打开工具→选项菜单,然后选择“构建和运行”一项,再进入Qt版本选项卡。点击右上角的“添加”按钮,然后会让选择qmake.exe文件,我们在Qt(不是Qt Creator)安装目录的bin目录中找到该文件并打开。现在已经默认生成了版本信息,我们点击确定按钮即可。

2、关联MinGW。在安装Qt 4.8.6及以后的Qt 4版本时,应该按照安装时的提示来下载相应版本的MinGW,不然编译程序无法运行。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下载并指定GDB才能正常调试。下载完MinGW和GDB以后,将其解压到Qt的安装目录中,比如这里都解压到了C:Qt目录中。打开工具→选项菜单,然后选择“构建和运行”一项,再进入工具链选项卡。点击右上角的“添加”按钮,然后会让选择mingw32-g++.exe文件,我们在MinGW安装目录的bin目录中找到该文件并打开。关联GDB则进入调试器选项卡添加GDB相关exe文件。

如果安装的是集成开发包QtSDK,则不需要手动关联Qt库、MinGW和GDB,由Qt自动关联。

注意:Qt5以后版本默认也包含了所有需要的工具,不存在这里的情况,直接下载安装即可使用!

3、在创建桌面版项目时,最好选中“使用影子构建”,这样编译生成的文件会和源码分别存放,如下图所示。编译完成后会发现多了一个helloworld-build-desktop-Qt_4_8_1__4_8_1____目录,里面存放的就是编译生成的文件。这就是前面创建项目讲到的 “使用影子构建” ,如果没有选中这个,那么生成的文件就会和源码在同一个目录里。

13、状态信息可以被分为三类:临时信息,如一般的statusTip提示信息,上面讲到的动作提示就是临时信息;正常信息,如显示页数和行号;永久信息,如显示版本号或者日期。可以使用showMessage()函数来显示一个临时消息,它会出现在状态栏的最左边。一般用statusBar->addWidget()函数添加一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。如果要显示永久信息,要使用statusBar->addPermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在状态栏的最右端,不会被临时消息所掩盖。

14、关于随机数,在Qt中是使用qrand()和qsrand()两个函数实现的。在使用qrand()函数产生随机数之前,一般要使用qsrand()函数为其设置初值,如果不设置初值,那么每次运行程序,qrand()都会产生相同的一组随机数。为了每次运行程序时,都可以产生不同的随机数,我们要使用qsrand()设置一个不同的初值。

Ⅵ 新人刚学QT,用命令提示符进去想构建程序结果帮我看看吧

错误1:
cd f:.....后注意你的当前目录还是C目录,这个时候需要再输入一次:

f: 后回车,才可以将当前目录切换为你刚才输入的f盘的工程目录。或者先F:回车,再输入 cd f...也行。因为涉及到盘符的切换,单纯的cd并不能直接切换过来,所以出现了找不到文件的情况。

错误2:
win10版本太新,Qt还没有将win10加入到其支持的操作系统列表。你可以试试下载最新版本的Qt或者说网络一下 Qt WIn10如何配置。一般情况下应该是不会出现这个问题的,希望第一个问题解决了就没有错误2了。
希望能帮到你,请采纳!

Ⅶ qt的qmake命令的使用方法

我来回答你的问题吧 首先make命令一般是linux上gcc默认使用的 而windows上编程一般使用visual c++的,它的编译器命令就不是make而是nmake。其次你使用qtCreator编译就可以,没必要使用命令行,因为命令行需要设置环境变量的。如果硬要使用命令行可以用qt工具栏里找一个qt command prompt,这里面用minw32-make可以编译,ming32是qtcreator使用的编译器。

改成#include <QtGui/QApplication>试试

Ⅷ linux下如何进行Qt编程

Linux下Qt编程入门:

http://wenku..com/view/6b0fd37ca26925c52cc5bfb4.html

linux下用Qt编程:

目的:如何编写有图形的应用程序
操作:用Qt编写。
先创建一个目录,比如chapter_1,然后在这个目录里编写一个
main.cpp 程序。接下来在这个目录里依次执行下列命令就会生成可
执行文件,注意可执行文件的文件名就是目录的名字,即
chapter_1。
$qmake -project
$qmake
$make
如果源代码中有错误,就不会生成可执行文件。这要要修改源程序,然后再执行上面的命令。
提示:qmake是用来生成makefile文件的,只要执行过就生成了
makefile文件。在大多数情况下,修改源代码后并不需要再次生成
makefile文件,而只执行make进行编译就可以了。

更多资料和信息你可以去看看>Linux学习网

Ⅸ 怎么在Qt creator中加入命令行参数进行编译程序

直接创建一个QT GUI应用 没添加任何代码

编译输出如下:
21:34:14: 为项目test1执行构建步骤 ...
21:34:14: 配置没有改变, 跳过 qmake 步骤.
21:34:14: 正在启动 "nmake.exe"
{1"?} {2?}
qtcreator_ctrlc_stub: Command line failed: nmake.exe
21:34:14: 进程"nmake.exe"崩溃。
构建项目test1 时发生错误 (目标: 桌面)
当执行构建步骤 'Make'时

在构建和运行那里设置“使用jom代替nmake”后,编译输出如下:
。。。。。。。
'cl' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
jom: E:\QT_new_start\project_files\test1-build-desktop-Qt_4_8_0_for_Desktop_-_MSVC2010__Qt_SDK____\Makefile.Debug [debug\main.obj] Error 1
jom: E:\QT_new_start\project_files\test1-build-desktop-Qt_4_8_0_for_Desktop_-_MSVC2010__Qt_SDK____\Makefile.Debug [debug\mainwindow.obj] Error 1
jom 1.0.8 - empower your cores
jom: E:\QT_new_start\project_files\test1-build-desktop-Qt_4_8_0_for_Desktop_-_MSVC2010__Qt_SDK____\Makefile [debug] Error 2
21:37:32: 进程"E:\QT_new_start\QtCreator\bin\jom.exe"退出,退出代码 2 。
构建项目test1 时发生错误 (目标: 桌面)
当执行构建步骤 'Make'时执行qmake没问题

阅读全文

与qt编程指令创建相关的资料

热点内容
php截图flash 浏览:272
卸载联想app哪个好 浏览:719
php文字转图片 浏览:328
豆客后台怎么加密码 浏览:574
jpg转换pdf破解版 浏览:978
php基础书籍推荐 浏览:775
服务器与外网不通如何验证 浏览:351
电子版是不是就是文件夹 浏览:50
游戏属性文件加密 浏览:462
如何让安卓手机桌面图标下移 浏览:528
ubuntuphp5环境搭建 浏览:99
赌瘾解压视频 浏览:917
晋城移动dns服务器地址 浏览:294
php开源文库系统 浏览:134
android记事本源码 浏览:407
安卓11小游戏怎么玩法 浏览:190
gif有损压缩 浏览:937
windows下安装linux命令操作 浏览:844
米家app怎么设置进门亮灯 浏览:652
任我行服务器为什么会影响截图 浏览:296