第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 应用程序所需要的各个资源。我们可以使用普通文本编辑器打开这个文件:
//////QIcon 的参数,以 : 开始,意味着从资源文件中查找资源。:/images/doc-open 就是找到了这里的 document-open.png 这个文件。(我们使用的是 png 格式的图片,这是 Qt 内置支持的图片格式。其他格式的图片,比如 jpg、gif 则需要插件支持。这些插件实际已经随着 Qt 一同发布。)
QAction 第二个参数中,文本值前面有一个 &,意味着这将成为一个快捷键。注意看截图中 File 的 F 有一个下划线。
2///
//下面一句,我们使用了 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);
//
5//
-
QMenu *file = menuBar()->addMenu(tr("&File"));
-
file->addAction(openAction); -
-
QToolBar *toolBar = addToolBar(tr("&File")); -
toolBar->addAction(openAction); -
-
statusBar() ;
///下面的 menuBar()、toolBar() 和 statusBar() 三个是 QMainWindow 的函数,用于创建并返回菜单栏、工具栏和状态栏。我们可以从代码清楚地看出,我们向菜单栏添加了一个 File 菜单,并且把这个 QAction 对象添加到这个菜单;同时新增加了一个 File 工具栏,也把 QAction 对象添加到了这个工具栏。我们可以看到,在菜单中,这个对象被显示成一个菜单项,在工具栏变成了一个按钮。至于状态栏,则是出现在窗口最下方,用于显示动作对象的提示信息的。