`
izuoyan
  • 浏览: 9221196 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Qt学习之路(13): 菜单和工具条(续)

阅读更多
版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/205958
前面一节我们已经把QAction添加到菜单和工具条上面。现在我们要添加一些图片美化一下,然后把信号槽加上,这样,我们的action就可以相应啦!
首先来添加图标。QAction的图标会显示在菜单项的前面以及工具条按钮上面显示。
为了添加图标,我们首先要使用Qt的资源文件。在QtCreator的项目上右击,选择New File...,然后选择resource file。
然后点击next,选择好位置,Finish即可。为了使用方便,我就把这个文件建在根目录下,建议应该在仔细规划好文件之后,建在专门的 rsources文件夹下。完成之后,生成的是一个.qrc文件,qrc其实是Qt Recource Collection的缩写。它只是一个普通的XML文件,可以用记事本等打开。不过,这里我们不去深究它的结构,完全利用QtCreator操作这个文 件,
点击Add按钮,首先选择Add prefix,然后把生成的/new/prefix改成/。这是prefix就是以后使用图标时需要提供的前缀,以/开头。添加过prefix之后,然后 在工程文件中添加一个图标,再选择Add file,选择那个图标。这样完成之后保存qrc文件即可。
说明一下,QToolBar的图标大小默认是32*32,菜单默认是16*16。如果提供的图标小于要求的尺寸,则不做操作,Qt不会为你放大图片;反之,如果提供的图标文件大于相应的尺寸要求,比如是64*64,Qt会自动缩小尺寸。
图片的路径怎么看呢?可以看出,Qt的资源文件视图使用树状结构,根是/,叶子节点就是图片位置,连接在一起就是路径。比如这张图片的路径就是/Open.png。
注意,为了简单起见,我们没有把图标放在专门的文件夹中。正式的项目中应该单独有一个resources文件夹放资源文件的。
然后回到前面的mainwindow.cpp,在构造函数中修改代码:
openAction = new QAction(tr("&Open" ), this );
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open a file." ));
openAction->setIcon(QIcon(":/Open.png" )); // Add code.
我们使用setIcon添加图标。添加的类是QIcon,构造函数需要一个参数,是一个字符串。由于我们要使用qrc中定义的图片,所以字符串 以 : 开始,后面跟着prefix,因为我们先前定义的prefix是/,所以就需要一个/,然后后面是file的路径。这是在前面的qrc中定义的,打开 qrc看看那张图片的路径即可。
好了,图片添加完成,然后点击运行,看看效果吧!
瞧!我们只需要修改QAction,菜单和工具条就已经为我们做好了相应的处理,还是很方便的!
下一步,为QAction添加事件响应。还记得Qt的事件响应机制是基于信号槽吗?点击QAction会发出triggered()信号,所以,我们要做的是声名一个slot,然后connect这个信号。
mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT

public :
MainWindow(QWidget *parent = 0);
~MainWindow();

private slots:
void open();

private :
QAction *openAction;
};
因为我们的open()目前只要在类的内部使用,因此定义成private slots即可。然后修改cpp文件:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
openAction = new QAction(tr("&Open" ), this );
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open a file." ));
openAction->setIcon(QIcon(":/Open.png" ));
connect(openAction, SIGNAL(triggered()), this , SLOT(open()));

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

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

void MainWindow::open()
{
QMessageBox::information(NULL, tr("Open" ), tr("Open a file" ));
}
注意,我们在open()函数中简单的弹出一个标准对话框,并没有其他的操作。编译后运行,看看效果:
好了,关于QAction的动作也已经添加完毕了!
至此,QAction有关的问题先告一段落。最后说一下,如果你还不知道怎么添加子菜单的话,看一下QMenu的API,里面会有一个addMenu函数。也就是说,创建一个QMenu然后添加就可以的啦!

本文出自 “豆子空间 ” 博客,请务必保留此出处http://devbean.blog.51cto.com/448512/205958

分享到:
评论

相关推荐

    qt学习之路

    `,让程序进入消息循环,等待可能的菜单、工具条、鼠标等的输入,并进行响应。 二、连接信号和响应函数 连接信号和响应函数是Qt的核心机制之一。该机制允许开发者连接控件的信号到slot函数上,以便响应用户的交互...

    Qt学习之路---尤其适用Qt初学者

    9. **菜单和工具条** —— 学习如何为应用程序添加菜单和工具条,提升用户体验。 10. **事件处理** —— 介绍Qt的事件系统,包括事件的接收、忽略、自定义等。 11. **QPainter** —— 了解Qt的绘图系统,学会如何...

    qt学习之路.pdf

    本节通过实例介绍了如何在Qt中创建和使用菜单以及工具条。 11. 状态栏 状态栏用于显示应用程序的状态信息。本节讲述了如何添加和使用状态栏来提升用户体验。 12. 标准对话框 Qt提供了多个预定义的标准对话框,本节...

    PyQt5学习(一):制作菜单、工具条,并在状态栏中动态显示实时时间

    学习了PyQt5制作菜单和工具条,期间遇到一些问题,现在都一一解决了,心情大好。 是在PyCharm20.1中编写的代码。 首先引入库 import sys from PyQt5 import QtWidgets,QtGui,QtCore from PyQt5.QtCore import Qt ...

    QT界面框架(滑动导航条+伸缩菜单)

    本文将详细解析"QT界面框架(滑动导航条+伸缩菜单)"这一主题,以及如何利用QT库实现滑动导航条和伸缩菜单。 首先,QT是Qt Company开发的一个开源跨平台应用程序开发框架,它基于C++,提供了丰富的API和面向对象的...

    Qt5学习之路2

    Qt5学习之路2涵盖了多个方面的知识点,这包括但不限于Qt基础,GUI组件,信号槽机制,Qt模块,事件处理,绘图系统,模型/视图架构,网络与数据库操作,以及QML和QtQuick2。本部分将会对这些知识点做详细说明。 ### ...

    Qt实现的浮动工具箱

    本项目是基于Qt实现的浮动工具箱,它允许用户在屏幕上自由移动和定位工具箱,增强了用户的交互体验。在这个系统中,浮动窗口是关键,而动态布局则是实现控件灵活展示的核心技术。 ### 一、Qt浮动窗口 浮动窗口是相...

    QT中如何添加工具条教程

    在 Qt 中添加工具条是开发桌面应用程序的常见需求,本文将介绍如何在 Qt 中添加工具条,添加菜单和状态栏。 首先,需要了解 Qt 中的资源文件(.qrc 文件),它是一个 XML 格式的文本文件,用于存储图标、图片、音频...

    Qt学习之路

    ### Qt学习之路知识点详解 #### 一、前言:Qt简介及优势 - **Qt**是一种跨平台的应用程序开发框架,主要使用C++语言编写,同时也支持Qt Quick和QML来构建用户界面。Qt框架提供了丰富的API,可以用于开发桌面应用、...

    qt之简易画板

    QMainWindow提供了菜单栏、工具栏和状态栏的集成,便于扩展功能。 1. **初始化项目** - 使用Qt Creator创建一个新的Qt Widgets Application项目。 - 在.pro文件中,确保包含必要的库,如`QT += widgets gui`。 2...

    基于Qt5的桌面悬浮窗工具

    【基于Qt5的桌面悬浮窗工具】是一种利用Qt5库开发的应用程序,它设计成桌面悬浮的形式,提供了独特的用户体验。Qt5是一个强大的跨平台应用程序开发框架,支持多种操作系统,包括Windows、Linux、macOS等。这个工具的...

    Qt+学习之路

    - **整体评价**:《Qt学习之路2》是一本非常适合初学者入门Qt的书籍,内容涵盖了Qt的基本概念和技术细节。 - **未来发展**:随着Qt5的发布,该书的部分内容可能需要更新,但其核心理念仍然非常有价值。 - **建议**:...

    Qt学习之路(1-60)

    在“菜单和工具条”部分,学习者将学习如何添加菜单栏、工具栏以及状态栏到应用程序中。这些是构成桌面应用程序用户界面的基本元素。 ### 标准对话框 Qt提供了一系列标准对话框,如文件对话框(QFileDialog)、颜色...

    PyQt菜单栏和工具条制作.rar

    本教程将深入探讨如何使用PyQt5构建菜单栏和工具条,这是任何应用程序中常见且重要的交互元素。 首先,菜单栏是位于窗口顶部的一系列下拉菜单,通常包含各种操作选项。在PyQt5中,`QMenuBar`类用于创建菜单栏。创建...

    Qt-MusicPlayer_MainWindow音乐_qt音乐播放器_QT_音乐播放器_

    在Qt中,MainWindow是一个继承自QMainWindow的类,提供了菜单栏、工具栏、状态栏等基础元素,开发者可以在这个基础上添加自定义的控件和功能。 【qt音乐播放器】部分,核心是利用Qt的多媒体模块(QMediaPlayer和...

    Qt5.10+GUI完全参考手册,qt5.15.2,QT

    4. **Qt主窗口**:`QMainWindow` 类是构建复杂应用程序的基类,它提供了菜单栏、工具栏、状态栏和 dockable 视图等功能。开发者可以利用它来构造具有专业外观的应用。 5. **布局管理**:Qt的布局管理器使得窗口部件...

    python Qt学习手册

    Qt库提供了丰富的组件,如按钮、文本框、滚动条、菜单、对话框等,以及布局管理器来优化窗口元素的排列。同时,Qt的设计模式遵循Model-View-Controller(MVC)架构,有助于实现代码的模块化和可维护性。 本书可能...

    嵌入式QT学习PDF

    最后,整个学习资料通过安博牛耳的教育体系,为学习者提供了一条系统学习嵌入式QT开发的道路,从基础的GUI开发到更高级的网络编程和数据库集成,帮助开发者构建出功能强大且用户友好的嵌入式应用。通过深入学习这套...

Global site tag (gtag.js) - Google Analytics