QT添加资源文件步骤
- 格式:docx
- 大小:384.65 KB
- 文档页数:5
Video Playing and Processing在这一次的教程中,我们将介绍如何利用Phonon框架来创建一个视频播放器。
这一次的例子和音频播放器的例子相近,用了phonon所提供的API 接口,实现了视频文件的播放。
这些在不同的系统中实现方式不同,Phonon的最重要特征之一是它可以跨平台使用,这得益于它所支持的众多后端平台。
在Linux环境下,它通常使用GStreamer库;在Mac OS X环境下,他使用QuickTime;在Windows下,它使用Direct X和DirectShow库。
它还可以使用其他的后端平台库,如VLC和MPlayer后端。
Qt的多媒体支持能够以相同的API运行于所有平台。
然而,多媒体的播放能力通常取决于解码器和第三方库,并且由于竞争的存在以及软件专利之间错综复杂的关系,通常不会安装它们,目前仍没有较好的方法来解决这个问题,所以声音和视频文件会存在不能跨平台播放的问题。
而未来,最好的解决办法是利用诸如Ogg等开源媒体格式。
因为这一次的例子我们在Windows下运行时,它使用Direct X和DirectShow库。
所以他只能播放.mpg的文件。
当我们修改phonon的后端平台库之后,如使用VLC和MPlayer后端。
该用例就可以播放其他格式的视频了。
接着我们开始做一个视频播放器的小程序吧。
1.首先建立一个工程,单击”File”->”New File or Project…”,在弹出的对话框中选择”Qt4 Gui Application(Qt Gui 应用)”,单击”OK”按钮,将该工程命名为videoplayertest,选择保存该文件的路径,单击”Next”按钮,完成该文件工程的建立。
2.接着我们用以下这一语句来包含Phonon里的类定义:#include <phonon/phonon>为了能和Phonon进行连接,我们在videoplayertest.pro文件里添加以下这一语句:QT += phonon添加以后,.pro文件代码如下:QT += core guiQT += phononTARGET = videoplayertestTEMPLATE = appSOURCES += main.cpp\widget.cppHEADERS += widget.h3.打开widget.h,添加代码如下,#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QPushButton>#include <QFileDialog>#include <phonon/phonon>#include <QLabel> #include <QLayout> #include <QAction> #include <QToolBar> #include <QIcon> #include <QTime> class Widget : public QWidget{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:QToolBar *toolbar;QHBoxLayout *hlayout;QVBoxLayout *vlayout;QLabel *name;QLabel *totaltime;QAction *open;QAction *play;QAction *stop;QAction *volume;QAction *exit;Phonon::MediaObject *audio;Phonon::AudioOutput *audioOutput;Phonon::VolumeSlider *volumeSlider;Phonon::SeekSlider *seekSlider;QIcon *playicon;QIcon *openicon;QIcon *stopicon;QIcon *volumeicon;QIcon *pauseicon;QIcon *winicon;QIcon *exiticon;private slots:void openfile();void playorpause();void volumesetting();void audiostop();void settotaltime(qint64);};#endif // WIDGET_H4.打开widget.cpp,添加代码如下:#include "widget.h“Widget::Widget(QWidget *parent) : QWidget(parent) {QFont font("Arial",15,QFont::Bold);name = new QLabel(this);name->setAlignment(Qt::AlignHCenter);name->setFont(font);name->hide();QFont font1("Arial",10,QFont::Bold);totaltime= new QLabel(this);totaltime->setFont(font1);totaltime->setAlignment(Qt::AlignRight);totaltime->hide();openicon= new QIcon(":/images/music_folder.png");playicon= new QIcon(":/images/play.png");volumeicon = new QIcon(":/images/icon.png");stopicon = new QIcon(":/images/stop.png");pauseicon= new QIcon(":/images/pause.png");exiticon=new QIcon(":/images/exit.png");winicon = new QIcon(":/images/1.PNG");setWindowIcon(*winicon);/*构造函数首先对界面控件进行初始化,并用QIcon读入小图标的文件,上面的代码调用了资源文件中的icon.png,stop.png,pause.png,exit.png,1.PNG等多张图片。
Qt资源体系采用平台独立机制来存储应用程序执行时的二进制文件。
这种机制在应用程序需要一些确定的文件(图标、翻译文件等等)而且又不想冒丢失文件的风险时是有用的。
资源体系依赖于qmake, rcc(Qt's resource compiler), 和QFile的紧密协作。
Qt 3 的qembed工具和image collection机制被废除。
Resource Collection Files (.qrc)与应用程序关联的应用程序由.qrc文件来指定,它用XML记录硬盘上的文件和对应的随意指定的资源名称,应用程序通过资源名称来访问资源。
一个.qrc文件的例子:<!DOCTYPE RCC><RCC version="1.0"><qresource><file>images/copy.png</file><file>images/cut.png</file><file>images/new.png</file><file>images/open.png</file><file>images/paste.png</file><file>images/save.png</file></qresource></RCC>.qrc文件中列出的资源文件是程序的源码树的一部分。
指定的路径是.qrc文件所在目录的相对路径。
注意,列出的资源文件必须位于.qrc文件所在目录或者其子目录下。
资源数据也能被编译进二进制文件中,因此应用程序代码可以立即访问;也可以创建一个二进制资源,稍后在程序中登记了资源体系的代码中指定。
缺省时,程序可以用资源在源码树中的名称加一个:/前缀来访问它。
例如,在程序的源码树中是images/cut.png 的文件可以通过:/images/cut.png来访问。
qt添加资源文件的步骤-回复如何添加资源文件到Qt项目中Qt是一个跨平台的C++应用程序开发框架,它提供了丰富的UI控件和功能模块,使开发者能够轻松地开发可移植的应用程序。
在Qt项目中,添加资源文件可以方便地管理和使用项目中使用的各种资源,如图像、字体、样式表等。
本文将介绍如何一步一步地将资源文件添加到Qt项目中。
第一步:打开Qt项目并创建资源文件首先,打开你的Qt项目。
可以使用Qt Creator来创建一个新的项目,也可以打开一个现有的项目。
接下来,右击项目文件夹,选择“新建文件或项目”选项。
在弹出的对话框中,选择“Qt”类别并选择“资源文件”作为文件类型。
然后,点击“选择”按钮选择你想要添加的资源文件的名称和路径,并点击“下一步”按钮。
第二步:编辑资源文件资源文件(以.qrc为后缀)是一个XML文件,用于描述项目中的资源结构和路径。
在这一步,你可以编辑资源文件以添加、修改或删除资源。
在Qt Creator的编辑器中,你可以通过点击“在此处单击添加文件”按钮来添加资源文件。
或者,你也可以手动在XML文件中添加文件或文件夹的路径。
你可以使用以下代码来添加一个图像资源:<file>images/logo.png</file>你也可以使用以下代码来添加一个文件夹资源:<qresource prefix="/stylesheets"><file>stylesheets/light.qss</file><file>stylesheets/dark.qss</file></qresource>你可以根据需要添加任意数量的资源,包括但不限于图像、字体、样式表、音频等。
第三步:使用资源文件一旦你完成了资源文件的编辑,你就可以在你的Qt项目中使用这些资源了。
在你的代码中,你可以使用以下语句来访问和使用资源文件中的资源:QImage logo(":/images/logo.png");QFont font(":/fonts/Arial.ttf");QString stylesheet = ":/stylesheets/light.qss";在这些语句中,冒号“:”后面的路径是资源文件中资源的路径。
【命令介绍】第一种常用方式:#模块设置,一般设置为app(生成应用程序,默认),subdirs(生成makefile文件编译subdirs指定的子文件夹),lib(生成库文件)TEMPLATE = app#指定生成的应用程序放置的目录DESTDIR += ../bin#指定生成的应用程序名TARGET = pksystem#添加或减少CONFIG的配置模块,一般采用默认即可,但是除去debug_and_release模块不会生成debug和release文件夹#CONFIG += releaseCONFIG -= debug_and_release#指定uic命令将.ui文件转化成ui_*.h文件的存放的目录UI_DIR = ./temp#指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录RCC_DIR = ./temp#指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录MOC_DIR = ./temp#指定目标文件的存放目录OBJECTS_DIR = ./temp#程序编译时依赖的相关路径DEPENDPATH += . forms include qrc sources#头文件包含路径INCLUDEPATH += .#qmake时产生的信息,$${a}读取变量a的字符串,$$(PATH)读取环境变量PATH #message($$(PATH))#源文件编码方式CODECFORSRC = GBK# Input#工程中包含的头文件HEADERS += include/painter.h#工程中包含的.ui设计文件FORMS += forms/painter.ui#工程中包含的源文件SOURCES += sources/main.cpp sources/painter.cpp#工程中包含的资源文件RESOURCES += qrc/painter.qrc第二种常用方式,用于子文件夹的编译:#设定模块为子文件夹编译方式TEMPLATE = subdirs#子文件夹目录,可用\换行SUBDIRS = src1 \src2【写法】在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:1. 注释从“#”开始,到这一行结束。
QT配置文件.pro介绍1、注释从“#”开始,到这一行结束。
2、指定源文件SOURCES = *.cpp对于多源文件,可用空格分开,如:SOURCES = 1.cpp 2.cpp3.cpp或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样: SOURCES = hello.cpp\main.cpp一个更冗长的方法是单独地列出每一个文件,就像这样:SOURCES+= hello.cppSOURCES +=main.cpp这种方法中使用“+=”比“=”更安全,因为它只是向已有的列表中添加新的文件,而不是替换整个列表。
3. 指定头文件HEADERS = hello.h或者HEADERS += hello.h列出源文件的任何一个方法对头文件也都适用。
4. 配置信息CONFIG变量指定了编译器所要使用的选项和所需要被连接的库。
配置变量中可以添加任何东西,但只有下面这些选项可以被qmake识别。
下面这些选项控制着使用哪些编译器标志:release - 应用程序将以release模式连编。
如果“debug”被指定,它将被忽略。
debug - 应用程序将以debug模式连编。
warn_on - 编译器会输出尽可能多的警告信息。
如果“warn_off”被指定,它将被忽略。
warn_off - 编译器会输出尽可能少的警告信息。
下面这些选项定义了所要连编的库/应用程序的类型:qt - 应用程序是一个Qt应用程序,并且Qt库将会被连接。
thread - 应用程序是一个多线程应用程序。
x11 - 应用程序是一个X11应用程序或库。
windows - 只用于“app”模板:应用程序是一个Windows下的窗口应用程序。
console - 只用于“app”模板:应用程序是一个Windows下的控制台应用程序。
dll - 只用于“lib”模板:库是一个共享库(dll)。
staticlib - 只用于“lib”模板:库是一个静态库。
Qt添加图标1 Qt添加.exe程序图标1.1 Qt Creator添加.exe程序图标在⽹上(https:///)⽣成⼀个ico图标⽂件,命名为:logo.ico,将 ico⽂件存放⾄应⽤程序的源代码⽬录。
1.1.1 ⽅法⼀如果使⽤qmake来⽣成makefile⽂件,只需要在.pro中添加:RC_ICONS = logo.ico然后,重新⽣成makefile⽂件和应⽤程序,对应的.exe可执⾏程序的图标就会转变为刚才添加的图标。
1.1.2 ⽅法⼆新建⼀个.rc⽂件,“新建⽂件”---“C++ source File”---命名为logo.rc(不能掉了rc后缀)。
打开logo.rc⽂件添加如下⼀⾏代码。
IDI_ICON1 ICON DISCARDABLE "logo.ico"最后在pro⽂件添加⼀⾏代码RESOURCES += \qss.qrc#RC_ICONS = logo.icoDISTFILES += \logo.rcRC_FILE += logo.rc保存项⽬重新编译,exe图标和执⾏时window图标都将发⽣变化。
1.2 Qt in VS添加.exe程序图标在⽹上(https:///)⽣成⼀个ico图标⽂件,命名为:temp.ico,将 ico⽂件存放⾄应⽤程序的源代码⽬录。
在⼯程根⽬录下,新建⼀个temp.rc⽂件,内容如下:IDI_ICON1 ICON DISCARDABLE "logo.ico"修改“⼯程名.vcxproj”⽂件,在:<?xml version="1.0" encoding="utf-8"?><Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="/developer/msbuild/2003">之后,添加<ItemGroup><ResourceCompile Include="temp.rc"/></ItemGroup>重新⽣成项⽬即可。
在Qt(C++)中与Python混合编程⼀、PythonQt库在Qt(C++)中与Python混合编程,可以使⽤PythonQt库。
⽹站⾸页:下载页⾯:只提供了源码下载,需⾃⾏编译。
版本要求:其⽹站building页⾯上的要求:Qt 4.8.1以上,Python2.6以上实际测试中得出的版本要求:Qt5.4以上,可以编译得到动态链接库(.so⽂件);Python2.7.12,编译范例程序成功。
(备注:我的测试环境是操作系统 Ubuntu 16.04 64bit,PythonQt版本:3.2)⼆、编译与安装编译⽂档:这⾥以Linux(Ubuntu系)为例,介绍⼀下编译安装⽅法。
1. 安装Qt去Qt⽹站下载安装包,或者通过apt安装。
安装完毕后,在命令⾏中执⾏qmake -v,查看输出信息,确认Qt已安装好。
注意:如果使⽤apt或者synaptic安装Qt,那么需要⼿动安装Qt的⼀些模块,例如multimedia等。
以Qt5为例,其模块⼀般以libQt5为开头,可以⽤apt或synaptic搜索关键字安装。
如果缺少模块,则编译时会报错提⽰。
2. 安装Python⽤apt安装Python和Python-dev。
Linux⼀般预装Python。
sudo apt install python python-dev3. 编译将下载的源码解压。
进⼊解压⽬录,之后执⾏编译指令。
假设解压⽬录为PythonQtcd PythonQtqmakemake all编译可能需要花费⼏分钟,请耐⼼等待。
编译完成后,编译得到的库⽂件以及范例程序都在PythonQt/lib下。
此时运⾏范例程序可能失败,需要先安装刚编译好的库。
4. 安装所谓安装,是指让系统能够找到编译好的库⽂件。
实现的⽅式有多种,这⾥介绍通过链接的⽅式安装。
⾸先确认系统中的库⽂件默认⽬录是什么。
cd /etc/ld.so.conf.d/ls可能列出⼀些配置⽂件,⽂件名是对应的⽬录,⽐如x86_64-linux-gnu.conf。
实验4 使用Qt 设计师创建主窗口应用4.1. 创建主窗体使用Qt设计师来创建主窗口应用是非常方便的,其步骤与使用代码创建基本一样。
1.选择模板首先,创建一个窗体,选择“Main Window”模板,创建一个空的主窗体,如下图:2.创建资源在资源浏览器中,点击编辑资源,如下图所示:我们将要在程序中使用图标资源,因此在资源编辑对话框中,点击新建资源,首先创建资源文件,我们就创建一个名为resource.qrc的资源文件,然后在编辑区中,再添加前缀,我们以“\”作为资源的前缀,图标文件我们都放在images目录下,然后添加图标文件将该目录下的所有文件添加即可,如下图所示:完成之后,我们可以在资源浏览器中看到添加的各个图标资源,如下图所示:3.创建动作在动作编辑器中,点击新建动作,进行动作的创建,在此过程中,可以设置动作的文本(显示在菜单项上的文本),对象名称,工具提示(鼠标放在动作上时显示的提示信息),图标(也就是浏览资源管理器中的资源,选择适当的图标资源),快捷键(鼠标点击快捷键区域,然后按下希望设置的快捷键即可),如下图所示:我们创建了一个newAction动作,对应“文件”菜单下的“新建”菜单项。
通过同样的方式,我们将程序中用到的所有动作创建完成,如下图:4.将动作添加到工具栏和菜单上首先创建工具栏,在主窗口中右键单击即可在弹出菜单中选择“添加工具栏”来添加,如下图:要将动作添加到菜单和工具栏上,还需要创建菜单,这通过在主窗口中的“在这里输入”之处输入菜单的文本,并修改菜单的objectName即可,有了菜单和工具栏,就可以将动作添加到菜单和工具栏上了,这很简单,只要从动作编辑器中拖动动作放到相应的菜单和工具栏上即可,摆放动作的时候,可以根据需要插入分隔符,最终的结果如下图所示(注,菜单上的动作没有显示出来,但在对象查看器中可以看到已经添加到菜单上了):5.新建自定义槽函数为了配置信号和槽函数之间的连接,我们需要在Qt设计师中创建一些自定义的槽函数(当然也还需要在代码中声明和定义),点击Qt设计师工具栏上的“编辑信号/槽”工具按钮,切换到编辑信号/槽状态。
我们编写的gui可能需要一些额外的资源(比如贴图用的图片),可用资源文件统一管理。
以下以图片为例。
用qt creator 打开工程,为工程新建资源文件:
命名为“项目名.prc”,(此处为“clock.qrc”,名字可另起,后缀名不可改)。
系统自动切换到资源编辑界面:
如果没有自动切换到上述界面,双击clock.qrc即可。
选择添加—添加前缀,前缀名默认为“/new/prefix1”,改为在前缀一栏输入前缀名“/image”(可以另起,但是“/“”不能变)。
选中“/image”(如果只建立了image一个资源文件则自动选中),选择添加—添加文件,然后选中rose.png(或其他图片),效果:
添加资源文件后要保存,不然之后不能使用。
在上述界面中选中资源文件rose.png,可以为其起别名rose,方便使用。
如下图:
添加(更改)别名后同样保存一次。
如果要把该资源文件作为window icon,切换到ui编辑器,选择要添加icon 的窗口,找到下图荧光加亮的项目:
点击上图中红色圈住的下拉框,选择”添加资源”,弹出界面:
双击红色圈住部分,选择rose然后确定,如下示:
此时可以看到:
重新编译运行程序,察看效果:
可能遇到的问题:
1. 运行程序icon还是默认样式,而非所设置的图标。
可以尝试生成release 版本的可执行文件而非debug版本的。
2.编译失败,提示程序所依赖的***(资源名)不存在。
将资源(如上述的rose.png)拷贝到工程文件(.pro文件)所在目录。