一、添加资源文件
1、Qt中可以使用资源文件将各种类型的文件添加到最终生成的可执行文件中,这样就可以避免使用外部文件而出现的一些问题。而且,在编译时Qt还会将资源文件进行压缩,我们可能发现生成的可执行文件比我们添加到其中的资源文件还要小。
2、.我们向项目中添加新文件,模板选择Qt分类中的Qt资源文件(Qt Resource File)。如下图所示。然后将名称设置为myicon。
3、添加完文件后会自动打开该资源文件,需要先添加前缀,点击“添加”按钮,然后选择“添加前缀”,默认的前缀是“/new/prefix1”,这个可以随意修改(不要出现中文字符),我们这里因为要添加图片,所以修改为“/myimages”。然后再按下添加按钮来添加文件,这里最好将所有要用到的图片放到项目目录中。比如这里在项目目录中新建了一个images文件夹,然后将需要的图标文件粘贴进去。添加完文件后,如下图所示。
4、当添加完资源后,一定要按下Ctrl + S来保存资源文件,不然在后面可能无法显示已经添加的资源。
二、使用资源文件
1、我们重新回到设计模式打开新建菜单的编辑动作对话框,然后添加图标。在打开的选择资源对话框中,第一次可能无法显示已经存在的资源,可以按下左上角的绿箭头来更新显示。效果如下图所示
运行结果:
三、使用代码添加菜单
1、前面在设计模式添加了菜单项和图标,下面我们使用代码再来添加一个菜单项,并为其设置图标。在编辑模式打开mainwindow.cpp文件,并在构造函数中添加如下图所示代码:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //创建新动作 QAction *openAction=new QAction(tr("&Open"),this); //添加图标 QIcon icon1(":/myimages/images/a.jpg"); //设置快捷键 openAction->setIcon(icon1); openAction->setShortcut(QKeySequence(tr("Ctrl+O"))); //在文件菜单中设置新的打开动作 ui->menu_F->addAction(openAction); //创建新的编辑菜单 QMenu *menu_E=ui->menuBar->addMenu(tr("编辑(&E)")); QAction *findAction=new QAction(tr("&Find"),this); QIcon icon2(":/myimages/images/a.jpg"); findAction->setIcon(icon2); findAction->setShortcut(QKeySequence(tr("Ctrl+F"))); menu_E->addAction(findAction); } MainWindow::~MainWindow() { delete ui; }
这里添加图标时,就使用了资源文件中的图标。使用资源文件,需要在最开始使用冒号,然后添加前缀,后面是文件的路径。在代码中使用“文件菜单”,就是使用其objectName。主窗口上的菜单都是在菜单栏menuBar上的,因为这里使用了设计模式,所以可以通过ui->menuBar来获取菜单栏,菜单栏是QMenuBar类对象。如果不使用设计模式而使用纯代码创建项目,那么可以直接在MainWindow类中使用menuBar()方法来获取菜单栏。菜单栏上可以通过addMenu()来添加新的菜单,而菜单中可以使用QAction来创建菜单项。现在可以运行程序查看效果。