1. C++ GUI Qt4编程第三章,图片使用资源机制法。

2. 步骤:

2-1. 在resource文件夹下,新建images文件,存放图片。
2-2. 新建spreadsheet.qrc文件,并在.pro文件中添加代码:
    RESOURCES = spreadsheet.qrc  
2-3. 打开.qrc文件,写入images文件中图片名称。

3. mainwindow.h

  1. /**/
  2. #ifndef MAINWINDOW_H
  3. #define MAINWINDOW_H
  4.  
  5. #include <QMainWindow>
  6.  
  7. class QMenu;
  8. class QAction;
  9.  
  10. class MainWindow : public QMainWindow
  11. {
  12. Q_OBJECT
  13.  
  14. public:
  15. MainWindow();
  16.  
  17. private:
  18. /*菜单*/
  19. QMenu *fileMenu;
  20. QMenu *editMenu;
  21. QMenu *toolsMenu;
  22. QMenu *optionsMenu;
  23. QMenu *helpMenu;
  24.  
  25. /*File动作*/
  26. QAction *newAction;
  27. QAction *openAction;
  28. QAction *saveAction;
  29. QAction *saveAsAction;
  30. QAction *exitAction;
  31.  
  32. /*Edit动作*/
  33. QAction *cutAction;
  34. QAction *copyAction;
  35. QAction *pasteAction;
  36. QAction *deleteAction;
  37. QMenu *selectSubMenu;
  38. QAction *selectRowAction;
  39. QAction *selectColumnAction;
  40. QAction *selectAllAction;
  41. QAction *findAction;
  42. QAction *goToCellAction;
  43.  
  44. /*Tools动作*/
  45. QAction *recalculateAction;
  46. QAction *sortAction;
  47.  
  48. /*Options动作*/
  49. QAction *showGridAction;
  50. QAction *autoRecalculateAction;
  51.  
  52. /*Help动作*/
  53. QAction *aboutAction;
  54. QAction *aboutQtAction;
  55.  
  56. void createMenus();
  57. void createActions();
  58. void createFileActions();
  59. void createEditActions();
  60. void createToolsActions();
  61. void createOptionsActions();
  62. void createHelpAction();
  63. };
  64.  
  65. #endif /*MAINWINDOW_H*/

4. mainwindow.cpp

  1. /**/
  2. #include <QMenu>
  3. #include <QMenuBar>
  4. #include <QAction>
  5. #include "mainwindow.h"
  6.  
  7. MainWindow::MainWindow()
  8. {
  9. createActions();
  10. createMenus();
  11. }
  12.  
  13. void MainWindow::createMenus()
  14. {
  15. /*file menu*/
  16. fileMenu = menuBar()->addMenu(tr("&File"));
  17. fileMenu->addAction(newAction);
  18. fileMenu->addAction(openAction);
  19. fileMenu->addAction(saveAction);
  20. fileMenu->addAction(saveAsAction);
  21. fileMenu->addSeparator();
  22. fileMenu->addAction(exitAction);
  23.  
  24. /*edit menu*/
  25. editMenu = menuBar()->addMenu(tr("&Edit"));
  26. editMenu->addAction(cutAction);
  27. editMenu->addAction(copyAction);
  28. editMenu->addAction(pasteAction);
  29. editMenu->addAction(deleteAction);
  30. selectSubMenu = editMenu->addMenu(tr("&Select"));
  31. selectSubMenu->addAction(selectRowAction);
  32. selectSubMenu->addAction(selectColumnAction);
  33. selectSubMenu->addAction(selectAllAction);
  34. editMenu->addSeparator();
  35. editMenu->addAction(findAction);
  36. editMenu->addAction(goToCellAction);
  37.  
  38. /*tools menu*/
  39. toolsMenu = menuBar()->addMenu(tr("&Tools"));
  40. toolsMenu->addAction(recalculateAction);
  41. toolsMenu->addAction(sortAction);
  42.  
  43. /*option menu*/
  44. optionsMenu = menuBar()->addMenu(tr("&Option"));
  45. optionsMenu->addAction(showGridAction);
  46. optionsMenu->addAction(autoRecalculateAction);
  47.  
  48. /*间隔器*/
  49. menuBar()->addSeparator();
  50.  
  51. /*help menu*/
  52. helpMenu = menuBar()->addMenu(tr("&Help"));
  53. helpMenu->addAction(aboutAction);
  54. helpMenu->addAction(aboutQtAction);
  55. }
  56.  
  57. void MainWindow::createActions()
  58. {
  59. createFileActions();
  60. createEditActions();
  61. createToolsActions();
  62. createOptionsActions();
  63. createHelpAction();
  64. }
  65.  
  66. /*file动作*/
  67. void MainWindow::createFileActions()
  68. {
  69. /*newAction*/
  70. newAction = new QAction(tr("&New"), this);
  71. newAction->setIcon(QIcon(":/images/filenew.png"));
  72.  
  73. /*openAction*/
  74. openAction = new QAction(tr("&Open"), this);
  75. openAction->setIcon(QIcon(":/images/fileopen.png"));
  76.  
  77. /*saveAction*/
  78. saveAction = new QAction(tr("&Save"), this);
  79. saveAction->setIcon(QIcon(":/images/filesave.png"));
  80.  
  81. /*saveAsAction*/
  82. saveAsAction = new QAction(tr("Save &As..."), this);
  83. saveAsAction->setIcon(QIcon(":/images/filesaveas.png"));
  84.  
  85. /*exitAction */
  86. exitAction = new QAction(tr("E&xit"), this);
  87. }
  88.  
  89. /*edit动作*/
  90. void MainWindow::createEditActions()
  91. {
  92. /*cutAction*/
  93. cutAction = new QAction(tr("Cu&t"), this);
  94. cutAction->setIcon(QIcon(":/images/editcut.png"));
  95.  
  96. /*copyAction*/
  97. copyAction = new QAction(tr("&Copy"), this);
  98. copyAction->setIcon(QIcon(":/images/editcopy.png"));
  99.  
  100. /*pasteAction*/
  101. pasteAction = new QAction(tr("&Paste"), this);
  102. pasteAction->setIcon(QIcon(":/images/editpaste.png"));
  103.  
  104. /*deleteAction*/
  105. deleteAction = new QAction(tr("&Delete"), this);
  106. deleteAction->setIcon(QIcon(":/images/editdelete.png"));
  107.  
  108. selectRowAction = new QAction(tr("&Row"), this);
  109. selectColumnAction = new QAction(tr("&Column"), this);
  110. selectAllAction = new QAction(tr("&All"), this);
  111.  
  112. /*findAction*/
  113. findAction = new QAction(tr("&Find..."), this);
  114. findAction->setIcon(QIcon(":/images/editfind.png"));
  115.  
  116. /*goToCellAction*/
  117. goToCellAction = new QAction(tr("&Go to Cell..."), this);
  118. goToCellAction->setIcon(QIcon(":/images/editgotocell"));
  119. }
  120.  
  121. /*tools动作*/
  122. void MainWindow::createToolsActions()
  123. {
  124. recalculateAction = new QAction(tr("&Recalculate"), this);
  125. sortAction = new QAction(tr("&Sort..."), this);
  126. }
  127.  
  128. /*options动作*/
  129. void MainWindow::createOptionsActions()
  130. {
  131. showGridAction = new QAction(tr("&Show Grid"), this);
  132. autoRecalculateAction = new QAction(tr("Auto-Recalculate"), this);
  133. }
  134.  
  135. /*help动作*/
  136. void MainWindow::createHelpAction()
  137. {
  138. aboutAction = new QAction(tr("&About"), this);
  139. aboutQtAction = new QAction(tr("About &Qt"), this);
  140. }

5. main.cpp

  1. #include <QApplication>
  2. #include "mainwindow.h"
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication app(argc, argv);
  7.  
  8. MainWindow *win = new MainWindow;
  9. win->show();
  10.  
  11. return app.exec();
  12. }

6. spreadsheet.qrc

  1. <RCC>
  2. <qresource>
  3. <file>images/editcopy.png</file>
  4. <file>images/editcut.png</file>
  5. <file>images/editdelete.png</file>
  6. <file>images/editfind.png</file>
  7. <file>images/editgotocell.png</file>
  8. <file>images/editpaste.png</file>
  9. <file>images/filenew.png</file>
  10. <file>images/fileopen.png</file>
  11. <file>images/filesave.png</file>
  12. <file>images/filesaveas.png</file>
  13. </qresource>
  14. </RCC>

C++ GUI Qt4编程(08)-3.2spreadsheet-resource的更多相关文章

  1. C++ GUI Qt4编程(10)-3.4spreadsheet

    1. C++ GUI Qt4编程第三章,增加spreadsheet. 2. spreadsheet.h /**/ #ifndef SPREADSHEET_H #define SPREADSHEET_H ...

  2. C++ GUI Qt4编程(09)-3.3spreadsheet-toolbar

    1. C++ GUI Qt4编程第三章,增加工具栏.状态栏和快捷键. 2. mainwindow.h /**/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #i ...

  3. C++ GUI Qt4编程(07)-3.1menu

    1. C++ GUI Qt4编程第三章,添加menu菜单. 2. mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include < ...

  4. C++ GUI Qt4编程(03)-1.3layout

    1. 根据C++ GUI Qt4编程(第二版)整理2. 系统:centos7:  Qt版本:5.5.13. 程序:layout.cpp #include <QApplication> #i ...

  5. C++ GUI Qt4编程(02)-1.2quit

    1. 根据C++ GUI Qt4编程(第二版)整理2. 系统:centos7:  Qt版本:5.5.13. 程序:quit.cpp #include <QApplication> #inc ...

  6. C++ GUI Qt4编程(01)-1.1Hello Qt

    1. 根据C++ GUI Qt4编程(第二版)整理2. 系统:centos7:  Qt版本:5.5.13. 程序:hello.cpp #include <QApplication> #in ...

  7. C++ GUI Qt4编程-创建自定义窗口部件

    C++ GUI Qt4编程-创建自定义窗口部件   Qtqt4 通过Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件,下面示范两种方式,并且也会说明如何把自定义窗口部 ...

  8. C++ GUI Qt4 编程 (第二版)

    [加拿大]JasminBlanchette [英]MarkSummerfield . 电子工业 2008. 前几天的问题多是因为版本不兼容的问题. QT本身Q4 Q5就有版本问题,然后集成到VS08 ...

  9. C++ GUI Qt4编程(13)-6.2preferencedialog

    1. 主要介绍了QStackedLayout.QListWidget.QDialogButtonBox的简单用法.2. QStackedLayout:   要使某个特定的子窗口部件可见,可以用setC ...

随机推荐

  1. selenium+phantomjs解析JS

    背景知识: PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, J ...

  2. django: rest-framework的 分页和过滤

    django: rest-framework的 分页和过滤 2018年06月28日 10:09:01 weixin_42359464 阅读数:136 标签: flaskrestframeworkdja ...

  3. c# 多维数组、交错数组(转化为DataTable)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. Shiro——概述

    Apache Shiro 是 Java 的一个安全(权限)框架. Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在 JavaEE 环境. Shiro 可以完成 ...

  5. Maven——依赖

    一.依赖的范围 依赖的范围有几个可选值,我们用得到的是:compile.test.provided 三个. [1]从项目结构角度理解 compile 和 test 的区别 [2]从开发和运行这两个不同 ...

  6. Java集合框架---重构设计

    面向接口编程: 接口类型 变量 =new 实现类(); List  list=new ArrayList(); --------------------------------------- List ...

  7. 删除一个数的K位使原数变得最小

    原创 给定一个n位正整数a, 去掉其中k个数字后按原左右次序将组成一个新的正整数.对给定的a, k寻找一种方案,使得剩下的数字组成的新数最小. 提示:应用贪心算法设计求解 操作对象为n位正整数,有可能 ...

  8. IOC AOP 设计模式

    IOC AOP 不是什么技术而是一种设计模式  学习 IOC AOP 其实是在学习一种思想. 1.IOC IOC其实是 将对象的创建和获取提取到外部.由外部IOC容器提供需要的组件. 看下面代码: p ...

  9. 使用VS Code开发C++

    1. 参考/转载 vs code进行c/c++开发 VSCode 的第一个C++程序(windows)[更新2018.10.28] 2. C++开发相关插件(扩展商店中直接搜索) 至少要装C/C++. ...

  10. 扩展卢卡斯定理(Exlucas)

    题目链接 戳我 前置知识 中国剩余定理(crt)或扩展中国剩余定理(excrt) 乘法逆元 组合数的基本运用 扩展欧几里得(exgcd) 说实话Lucas真的和这个没有什么太大的关系,但是Lucas还 ...