加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第8篇 QAction添加动作

(2014-06-29 16:35:38)
分类: QT学习之路

1///

openAction = new QAction(QIcon(":/images/doc-open"), tr("&Open..."), this);///我们在堆上创建了 openAction 对象。在 QAction 构造函数,我们传入了一个图标、一个文本和 this 指针

图标我们使用了 QIcon,传入值是一个字符串,这个字符串对应于 Qt 资源文件中的一段路径。Qt 资源文件的后缀名是 qrc。如果我们使用 Qt Creator,我们可以在新建文件中看到 Qt 资源文件。Qt 资源文件其实是一个 XML 描述的文件,表示 Qt 应用程序所需要的各个资源。我们可以使用普通文本编辑器打开这个文件:


   
        document-open.png
   

//////QIcon 的参数,以 : 开始,意味着从资源文件中查找资源。:/images/doc-open 就是找到了这里的 document-open.png 这个文件。(我们使用的是 png 格式的图片,这是 Qt 内置支持的图片格式。其他格式的图片,比如 jpg、gif 则需要插件支持。这些插件实际已经随着 Qt 一同发布。)

 

QAction 第二个参数中,文本值前面有一个 &,意味着这将成为一个快捷键。注意看截图中 File 的 F 有一个下划线。

2///

 openAction->setShortcuts(QKeySequence::Open);

//下面一句,我们使用了 setShortcut() 函数,用于说明这个 QAction 的快捷键。Qt 的 QKeySequence 为我们定义了很多内置的快捷键,比如我们使用的 Open。你可以通过查阅 API 文档获得所有的快捷键列表。这个与我们自己定义的有什么区别呢?简单来说,我们完全可以自己定义一个 tr(“Ctrl+O”) 来实现快捷键。原因在于,这是 Qt 跨平台性的体现。比如 PC 键盘和 Mac 键盘是不一样的,一些键在 PC 键盘上有,而 Mac 键盘上可能并不存在,或者反之。使用 QKeySequence 类来添加快捷键,会根据平台的不同来定义相应的快捷键。

 

3//

openAction->setStatusTip(tr("Open an existing file"));

///setStatusTip() 则实现了当用户鼠标滑过这个 action 时,会在主窗口下方的状态栏显示相应的提示。

4//

connect(openAction, &QAction::triggered, this, &MainWindow::open);

// connect() 函数,将这个 QAction 的 triggered() 信号与 MainWindow 类的 open() 函数连接起来。当用户点击了这个 QAction 时,会自动触发 MainWindow 的 open() 函数。

5//

  1. QMenu *file = menuBar()->addMenu(tr("&File"));
  2.     file->addAction(openAction);

  3.     QToolBar *toolBar = addToolBar(tr("&File"));
  4.     toolBar->addAction(openAction);

  5.     statusBar() ;

///下面的 menuBar()、toolBar() 和 statusBar() 三个是 QMainWindow 的函数,用于创建并返回菜单栏、工具栏和状态栏。我们可以从代码清楚地看出,我们向菜单栏添加了一个 File 菜单,并且把这个 QAction 对象添加到这个菜单;同时新增加了一个 File 工具栏,也把 QAction 对象添加到了这个工具栏。我们可以看到,在菜单中,这个对象被显示成一个菜单项,在工具栏变成了一个按钮。至于状态栏,则是出现在窗口最下方,用于显示动作对象的提示信息的。

 

 


 

 


 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有