如何用开源版qt写商业程序

如何用开源版qt写商业程序,第1张

使用开源版本的Qt可以开发商业程序,但需要遵守其授权协议,以免侵犯其智慧财产权。具体的开发步骤主要分为:1、搭建开发环境;2、设计程序框架;3、编写和测试代码;4、发布商业版本的程序并进行维护等。

QT是一个1991年开发的跨平台编程用户界面的应用程序开发框架。QT既可以开发图形用户界面程序,也可用于开发非图形用户界面程序,例如控制台工具和服务器。QT软件是面向对象的框架,使用特殊的代码生成扩展,称为元对象编译器,以及一些宏,QT很容易扩展,并且允许真正地组件编程。自从1996年早些时候,QT软件进入商业领域,成为全世界范围内数千种成功的应用程序的基础。QT软件也是流行的桌面环境设计基础。QT软件有专业版本和企业版本。

QT是一个完全的C++程序开发框架,包含类库和跨平台国际化开发工具QT API和开发工具对所有支持平台都是一致的,从而可以进行独立于平台的程序开发和配置使得跨平台软件编程直观、简易和方便

在百度上看到的一个贪吃蛇游戏

includelt;iostreamh;

includelt;windowsh;

includelt;timeh;

includelt;stdlibh;

includelt;conioh;

define N 21

void gotoxy(int x,int y)//位置函数

{

COORD pos;

posX=2x;

posY=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

void color(int a)//颜色函数

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);

}

void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)

{

int i,j;//初始化围墙

int wall[N+2][N+2]={{0}};

for(i=1;ilt;=N;i++)

{

for(j=1;jlt;=N;j++)

wall[i][j]=1;

}

color(11);

for(i=0;ilt;N+2;i++)

{

for(j=0;jlt;N+2;j++)

{

if(wall[i][j])

coutlt;lt;;■;;

else coutlt;lt;;□; ;

}

coutlt;lt;endl;

}

gotoxy(N+3,1);//显示信息

color(20);

coutlt;lt;;按 W S A D 移动方向;lt;lt;endl;

gotoxy(N+3,2);

color(20);

coutlt;lt;;按任意键暂停;lt;lt;endl;

gotoxy(N+3,3);

color(20);

coutlt;lt;;得分:;lt;lt;endl;

apple[0]=rand()%N+1;//苹果

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

coutlt;lt;;●;lt;lt;endl;

}

int main()

{

int i,j;

int snake=NULL;

int apple[2];

int score=0;

int tail[2];

int len=3;

char ch=;p;;

srand((unsigned)time(NULL));

init(apple);

snake=(int)realloc(snake,sizeof(int)len);

for(i=0;ilt;len;i++)

snake[i]=(int)malloc(sizeof(int)2);

for(i=0;ilt;len;i++)

{

snake[i][0]=N/2;

snake[i][1]=N/2+i;

gotoxy(snake[i][0],snake[i][1]);

color(14);

coutlt;lt;;★;lt;lt;endl;

}

while(1)//进入消息循环

{

tail[0]=snake[len-1][0];

tail[1]=snake[len-1][1];

gotoxy(tail[0],tail[1]);

color(11);

coutlt;lt;;■;lt;lt;endl;

for(i=len-1;i;0;i--)

{

snake[i][0]=snake[i-1][0];

snake[i][1]=snake[i-1][1];

gotoxy(snake[i][0],snake[i][1]);

color(14);

coutlt;lt;;★;lt;lt;endl;

}

if(kbhit())

{

gotoxy(0,N+2);

ch=getche();

}

switch(ch)

{

case ;w;:snake[0][1]--;break;

case ;s;:snake[0][1]++;break;

case ;a;:snake[0][0]--;break;

case ;d;:snake[0][0]++;break;

default: break;

}

gotoxy(snake[0][0],snake[0][1]);

color(14);

coutlt;lt;;★;lt;lt;endl;

Sleep(abs(200-05score));

if(snake[0][0]==apple[0]snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1

{

score++;

len++;

snake=(int)realloc(snake,sizeof(int)len);

snake[len-1]=(int)malloc(sizeof(int)2);

apple[0]=rand()%N+1;

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

coutlt;lt;;●;lt;lt;endl;

gotoxy(N+5,3);

color(20);

coutlt;lt;scorelt;lt;endl;

}

if(snake[0][1]==0snake[0][1]==Nsnake[0][0]==0snake[0][0]==N)//撞到围墙后失败

{

gotoxy(N/2,N/2);

color(30);

coutlt;lt;;Game over;lt;lt;endl;

for(i=0;ilt;len;i++)

free(snake[i]);

Sleep(INFINITE);

exit(0);

}

}

return 0;

}

初学者学习Qt有哪些好的书籍:

《Qt Creator快速入门》

霍亚飞写的,可算是Qt达人吧。这本书写得通俗易懂。与之配套的还有一个叫《Qt及Qt Quick开发实战精解》,属小项目实战,在入门的基础上学习。

《精通Qt4编程》

网上版本好像有些模糊,如果觉得不好,也很值得买一本。

《C++ GUI Qt4 编程》

比较高级,不是基础书,初学绝对不能搞这本。很多人都说是经典。

《Qt高级编程》

正如书题,是高级版的,也是老外写的,应该经典。

《C++设计模式--基于Qt4开源跨平台开发框架》

假设已经熟悉C++了,请先阅读一下Qt白皮书。它包含一个关于Qt软件的概述,并且提供了一些用来示范使用Qt进行编程的代码的片断。它会给你一个“大的图画”。

如果想要完全的在C++中进行编程,不使用任何设计工具的帮助下在代码中设计你的界面,请阅读教程。教程1就是被设计成把你带入Qt编程的一个教程,它更强调的是编写代码而不是一个特征的漫游。教程2是一个更加真实的例子,示范了如何编写菜单、工具条、文件的载入和保存、对话框等地那个。

如果你想使用一个设计工具来设计你的用户界面,那么你至少要先阅读Qt设计器手册的前几章。

到现在为止,如果你已经完成了一些小的可以工作的应用程序并且对Qt编程有了一个主要的了解。你可以直接开始你自己的项目了,但我们建议你阅读一些关键的概述来加深你对Qt的理解:对象模型和信号和槽。

在这里建议看一下概述并且阅读一些和你的项目相关的文章。也许会发现浏览和你项目做相同事情的实例的源代码是非常有用的。也可以阅读Qt的源代码,因为它们也被提供。

如果运行demo这个应用程序(在$QTDIR/examples/demo),你就会看到很多运转中的Qt窗口部件

Qt提供了广泛的文档,完全前后参考的超文本,所以你可以很容易地按你喜欢的方式进行点击。在文档中,你最经常使用的部分可能就是API参考。每一个链接都提供了一个不同的方式来导航API参考,全都试试,看哪一个更适合你。

 

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

2、关联MinGW。在安装Qt 486及以后的Qt 4版本时,应该按照安装时的提示来下载相应版本的MinGW,不然编译程序无法运行。如果是Qt4版本,需要使用GCC 44,也就是MinGW需要是44版本的,其他新的版本均不可用。在Qt 48版本,需要下载并指定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____目录,里面存放的就是编译生成的文件。这就是前面创建项目讲到的 “使用影子构建” ,如果没有选中这个,那么生成的文件就会和源码在同一个目录里。

4、补充:如果要给生成的exe可执行文件更换一个自定义图标,可以这样做:

(1)在项目中添加一个myapprc(名字可以随意)文件,然后在里面输入下面一行代码:IDI_ICON1               ICON    DISCARDABLE     "appicoico",这里的appicoico就是自己的ico图标文件;

(2)在pro项目文件中添加下面一行代码:RC_FILE = myapprc,

(3)重新编译

如果需要更换新的图标,建议先清理项目的编译文件,再重新编译,否则可能会报错,如下。

“:-1: 错误:No rule to make target `\helloworld\myapprc', needed by `debug/myapp_reso'  Stop”

5、在创建主窗口MainWindow项目后,打开mainwindowui文件进入设计模式。在这里可以看到界面左上角的“在这里输入”,我们可以在这里添加菜单。双击“在这里输入”,将其更改为“文件(&F)”,然后按下回车键,效果如下图所示。这里的&F表明将菜单的快捷键设置为了Alt+ F,可以看到,实际的显示效果中&符号是隐藏的。

同样的方法,我们在文件菜单中添加“新建(&N)”子菜单,效果如下图所示。菜单后面的那个加号图标是用来创建下一级菜单的。

Qt中的一个菜单被看做是一个Action,我们在下面的Action编辑器中可以看到刚才添加的“新建”菜单,如下图所示。

双击该条目,会d出编辑动作对话框,这里可以进行各项设置,比如我们可以设置菜单的快捷键,点击一下快捷键后面的行编辑器,然后按下键盘上的Ctrl + N,这样就可以将该菜单的快捷键设置为Ctrl + N。如下图所示。那么大家可能会问,既然该菜单的快捷键是这么设置的,那么前面设置的“新建(N)”中的N是什么呢?这个可以被称为加速键,就是只有当文件菜单处于激活(显示)状态时,按下N键才会执行新建菜单的功能。

6、Qt中可以使用资源文件将各种类型的文件添加到最终生成的可执行文件中,这样就可以避免使用外部文件可能出现的一些问题。而且,在编译时Qt还会将资源文件进行压缩,我们可能发现生成的可执行文件比我们添加到其中的资源文件还要小。创建完资源文件后会自动打开该资源文件,这里需要先在下面添加前缀,就是点击添加按钮,然后选择前缀,默认的前缀是“/new/prefix1”,这个可以随意修改(不要出现中文字符),我们这里因为要添加,所以修改为/myImages。然后再按下添加按钮来添加文件,这里最好将所有要用到的放到项目目录中。比如我们这里在项目目录中新建了一个images文件夹,然后将需要的图标文件粘贴进去。添加完文件后,如下图所示。

当添加完资源后,一定要按下Ctrl + S来保存资源文件,不然在后面可能无法显示已经添加的资源。

对于添加的资源文件,在项目目录中可以看到,即myResourcesqrc,使用写字板程序将其打开,可以发现它其实就是一个XML文档:

<RCC>

<qresourceprefix="/myImages">

<file>images/filenewpng</file>

<file>images/fileopenpng</file>

<file>images/filesavepng</file>

<file>images/filesaveaspng</file>

<file>images/findpng</file>

</qresource>

</RCC>

7、使用代码添加菜单时,在构造函数中添加如下代码:

QAction openAction = new QAction(QString::fromUtf8("&Open"), this);// 创建新的动作

QIcon icon(":/myImages/images/fileopenpng");// 添加图标

openAction->setIcon(icon);

openAction->setShortcut(QString::fromUtf8("Ctrl+O"));// 设置快捷键

ui->menu_F->addAction(openAction);// 在文件菜单中设置新的打开动作

这里添加图标时,就是使用的资源文件中的图标。使用资源文件,需要在最开始使用冒号,然后添加前缀,后面是文件的路径。在代码中使用文件菜单,就是使用其objectName。大家现在可以运行程序查看效果,当然这里也可以将Open改为中文。

8、向工具栏添加图标:可以将动作编辑器中的动作拖动到工具栏中作为快捷图标使用;可以在工具栏上点击鼠标右键来添加分隔符。

9、使用垂直布局管理器(QVBoxLayout)布局:部件自动垂直排列,并且进行水平拉伸,无论如何改变布局管理器的大小,按钮总是水平方向变化。

使用垂直分裂器(QSplitter)布局:部件自动垂直排列,但进行放大可以发现,使用分裂器按钮纵向是可以变大的,这就是分裂器和布局管理器的重要区别。

10、快速从头文件声明处创建函数定义的方法:到mainwindowh文件中,将鼠标定位到showFindText()函数上,然后点击右键,在d出的菜单中选择“重构”→“在mainwindowcpp添加声明”,或者直接使用Alt+Enter快捷键,这样就会直接在mainwindowcpp文件中添加函数定义,并跳转到该函数处。

11、在QtCreator中有几种快速定位函数的方法:

第一种,在函数声明的地方直接跳转到函数定义的地方。

例如我们在mainwindowh文件的loadFile()函数上点击鼠标右键,在d出的菜单上选择“在方法声明/定义之间切换”,这时就会自动跳转到mainwindowcpp文件中该函数的定义处。如下图所示。当然还可以反向使用。

第二种,快速查看一个文件里的所有函数。

可以在编辑器正上方的下拉框里查看正在编辑的文件中所有的函数的列表,点击一个函数就会跳转到指定位置。如下图所示。

第三种,使用类视图或者大纲视图。

在项目列表上面的下拉框中可以更改查看的内容,如果选择为类视图或者大纲,则会显示文件中所有的函数的列表。如下图所示。

第四种,使用查找功能查看函数的所有调用处。

在一个函数名上点击鼠标右键,然后选择“查找何处被使用”菜单,这时就会在下面的搜索结果栏中显示该函数所有的使用位置。我们可以通过点击一个位置来跳转到该位置。如下图所示。

12、在Action编辑器中,有两个属性toolTip和statusTip,分别为工具栏提示和状态栏提示,如下图

这时运行程序,当光标移动到新建动作上时,在下面的工具栏和状态栏将会出现设置的提示。如下图所示

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

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

以上就是关于如何用开源版qt写商业程序全部的内容,包括:如何用开源版qt写商业程序、什么是QT软件、Qt有什么作用,可以用来做什么 编程上的Qt等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/zz/9273377.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存