Qt Widgets——动作类与小部件菜单项
本文主要涉及以下三个类:
QAction可称为动作类,它一般可当作菜单中的项组成菜单,也可作为工具栏上的按钮,它主要由图标、文本及快捷键三部分组成。QActionGroup用于将QAction分组,设置组内各QAction的互斥性质(exclusive ),设置后,组内的动作,在外观上形成多选框(不互斥)或单选框(互斥)。QWidgetAction继承自QAction,它可将自定义的小部件插入到菜单项中,用于QSystemTrayIcon(托盘图标)的右键菜单似乎很合适。
公有函数如下:
- QAction(QObject * parent)
- QAction(const QString & text, QObject * parent)
- QAction(const QIcon & icon, const QString & text, QObject * parent)
- ~QAction()
- void setText(const QString & text)//设置文本
- void setSeparator(bool b)//设成分割线,为深灰色的线,用于分割功能区
- void setStatusTip(const QString & statusTip)//鼠标放至图标上时,状态栏提示文本
- void setToolTip(const QString & tip)//鼠标放到上方时显示的提示文本
- void setWhatsThis(const QString & what)
- void setIcon(const QIcon & icon)//设置图标
- void setIconText(const QString & text)//如果没有setText(),则这个会显示
- void setIconVisibleInMenu(bool visible)//默认图标在菜单中是可见的
- void setMenu(QMenu * menu)//本action形成右方有小箭头的子菜单
- void setMenuRole(MenuRole menuRole)//菜单角色设定,由于Mac OS X系统的一些特性,Qt 会对一些菜单项进行自动排列。比如,如果你的菜单是“关于”、“设置”、“首选项”、“退出”等等,我们可以给它们分配一个角色,Qt 则会根据这些角色对菜单项的顺序作出正确的排列。枚举值见1
- void setCheckable(bool)//设置是否可以勾选
- void setData(const QVariant & userData)//
- void setFont(const QFont & font)
- void setPriority(Priority priority)//设置优先级,该优先级用于表明action在用户界面上的优先级。如,当工具栏设置了Qt::ToolButtonTextBesideIcon模式,那么低优先级的actions将不会显示出标签。枚举值见2
- void setActionGroup(QActionGroup * group)//将本动作添加到某组
- void setAutoRepeat(bool)//当长按快捷键时,是否不断触发,默认是
- void setShortcut(const QKeySequence & shortcut)//设置快捷键
- void setShortcutContext(Qt::ShortcutContext context)
- void setShortcuts(const QList<QKeySequence> & shortcuts)
- void setShortcuts(QKeySequence::StandardKey key)
- QActionGroup * actionGroup() const
- void activate(ActionEvent event)
- QList<QGraphicsWidget *> associatedGraphicsWidgets() const
- QList<QWidget *> associatedWidgets() const
- bool autoRepeat() const
- QVariant data() const
- QFont font() const
- QIcon icon() const
- QString iconText() const
- bool isCheckable() const
- bool isChecked() const
- bool isEnabled() const
- bool isIconVisibleInMenu() const
- bool isSeparator() const
- bool isVisible() const
- QMenu * menu() const
- MenuRole menuRole() const
- QWidget * parentWidget() const
- Priority priority() const
- QKeySequence shortcut() const
- Qt::ShortcutContext shortcutContext() const
- QList<QKeySequence> shortcuts() const
- bool showStatusText(QWidget * widget = 0)
- QString statusTip() const
- QString text() const
- QString toolTip() const
- QString whatsThis() const
Public Slots
void | hover() |
void | setChecked(bool)//只有设为true,才能选中 |
void | setDisabled(bool b) |
void | setEnabled(bool) |
void | setVisible(bool) |
void | toggle() |
void | trigger() |
Signals
void | changed() |
void | hovered() |
void | toggled(bool checked)//切换 |
void | triggered(bool checked = false)//触发 |
1,enum QAction::MenuRole
Constant | Value | Description |
---|---|---|
QAction::NoRole | 0 | This action should not be put into the application menu |
QAction::TextHeuristicRole | 1 | This action should be put in the application menu based on the action's text as described in the QMenuBar documentation. |
QAction::ApplicationSpecificRole | 2 | This action should be put in the application menu with an application specific role |
QAction::AboutQtRole | 3 | This action matches handles the "About Qt" menu item. |
QAction::AboutRole | 4 | This action should be placed where the "About" menu item is in the application menu. The text of the menu item will be set to "About <application name>". The application name is fetched from the Info.plistfile in the application's bundle (See Deploying an Application on Mac OS X). |
QAction::PreferencesRole | 5 | This action should be placed where the "Preferences..." menu item is in the application menu. |
QAction::QuitRole | 6 | This action should be placed where the Quit menu item is in the application menu. |
2,enum QAction::Priority
Constant | Value | Description |
---|---|---|
QAction::LowPriority | 0 | 低优先级 |
QAction::NormalPriority | 128 | 中 |
QAction::HighPriority | 256 | 高 |
————————————————————————————————————————————————————————————————————
公有函数如下:
- QWidgetAction(QObject * parent)
- virtual ~QWidgetAction()
- QWidget * defaultWidget() const
- void releaseWidget(QWidget * widget)
- QWidget * requestWidget(QWidget * parent)
- void setDefaultWidget(QWidget * widget)//主要用这个设置自定义部件
————————————————————————————————————————————————————————————————————
- QActionGroup(QObject * parent)
- ~QActionGroup()
- QList<QAction *> actions() const
- QAction * addAction(QAction * action)//返回的是原action
- QAction * addAction(const QString & text)
- QAction * addAction(const QIcon & icon, const QString & text)
- QAction * checkedAction() const//返回当前被选中的action
- bool isEnabled() const
- bool isExclusive() const
- bool isVisible() const
- void removeAction(QAction * action)
Public Slots
void | setDisabled(bool b) |
void | setEnabled(bool) |
void | setExclusive(bool)//设置互斥性,默认互斥 |
void | setVisible(bool) |
Signals
void | hovered(QAction * action) |
void | triggered(QAction * action) |
————————————————————————————————————————————————————————————————————
测试示例,主菜单文件中测试了QActionGroup各函数效果,工具栏测试QAction各函数,系统托盘中测试QWidgetAction,加了个列表进去。
效果如图:
代码如下:
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QListWidget>
- #include <QWidgetAction>
- #include <QAction>
- #include <QMenu>
- #include <QIcon>
- #include <QKeySequence>
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- menu=new QMenu("菜单");
- menu->addAction("子菜单");
- //QAction
- ac1=new QAction(this);
- ac1->setText("setText");
- //ac1->setSeparator(true);
- ac1->setStatusTip("setStatusTip");
- ac1->setToolTip("setToolTip");
- ac1->setWhatsThis("setWhatsThis");
- ac1->setIcon(QIcon("://tray.ico"));
- ac1->setIconText("setIconText");
- ac1->setMenu(menu);
- ac1->setCheckable(true);
- ac1->setData(QString("setData"));
- ac1->setPriority(QAction::HighPriority);
- ac1->setShortcut(QKeySequence(tr("Ctrl+P")));
- ui->mainToolBar->addAction(ac1);
- //QActionGroup
- main_ac1=new QAction("左对齐",this);//创建动作
- main_ac2=new QAction("右对齐",this);
- main_ac3=new QAction("居中对齐",this);
- main_ac1->setCheckable(true);//设置是否可选中
- main_ac2->setCheckable(true);
- main_ac3->setCheckable(true);
- QActionGroup *alignmentGroup = new QActionGroup(this);
- alignmentGroup->addAction(main_ac1);//将动作加入组
- alignmentGroup->addAction(main_ac2);
- alignmentGroup->addAction(main_ac3);
- main_ac2->setChecked(true);//设置一个默认选中的
- QActionGroup *Group = new QActionGroup(this);
- QAction *ac_1 = Group->addAction("粗体");
- QAction *ac_2 = Group->addAction("倾斜");
- ac_1->setCheckable(true);
- ac_2->setCheckable(true);
- Group->setExclusive(false);
- //connect(ac,SIGNAL(triger)……
- QMenu *menu2=new QMenu("设置",this);
- menu2->addAction(main_ac1);//将动作加入菜单
- menu2->addAction(main_ac2);
- menu2->addAction(main_ac3);
- menu2->addAction(ac_1);
- menu2->addAction(ac_2);
- ui->menuBar->addMenu(menu2);
- //QWidgetAction
- //构建个自定义小部件
- QListWidget *lw=new QListWidget;
- lw->addItem("列表项1");
- lw->addItem("列表项2");
- lw->addItem("列表项3");
- //将部件加入QWidgetAction
- QWidgetAction *a1=new QWidgetAction(this);
- a1->setDefaultWidget(lw);
- //将QWidgetAction加入到QMenu
- QMenu *menu3=new QMenu(this);
- menu3->addAction(a1);
- //建立托盘图标,将QMenu加入到托盘图标右键菜单中
- QIcon icon("://tray.ico");
- trayIcon = new QSystemTrayIcon(this);
- trayIcon->setIcon(icon);
- trayIcon->setContextMenu(menu3);
- trayIcon->setVisible(true);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
Qt Widgets——动作类与小部件菜单项的更多相关文章
- Qt Widgets——主窗口及其主要组成部分
Main Window and Related Classes QAction 动作类,用于当做一个菜单项或工具项插入菜单或工具栏 QActionGroup 动作组,用于管理多个动作,设置它们之间的互 ...
- Android 之窗口小部件详解(三) 部分转载
原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...
- 【QT相关】Qt Widgets Module
Qt Widgets Module:提供了一些列UI元素. 使用: //头文件包含 #include <QtWidgets> //链接模式,在.pro文件中添加行: QT += widge ...
- ArcGIS API For JavaScript 开发(三)使用小部件设计页面框架
其实上一个的鹰眼.比例尺.图例等都是小部件:这篇文章主要是页面布局设计,dojo提供了非常多的小部件,从功能的角度可以分为3大类:表单小部件.布局小部件和应用小部件. 表单小部件于HTML中的表单部件 ...
- Android开发5:应用程序窗口小部件App Widgets的实现
前言 本次主要是实现一个Android应用,实现静态广播.动态广播两种改变 widget内容的方法,即在上篇博文中实验的基础上进行修改,所以此次实验的重点是AppWidget小部件的实现啦~ 首先,我 ...
- YII2 小部件(widgets)
小部件基本上在views中使用,在视图中可调用 yii\base\Widget::widget() 方法使用小部件. 该方法使用 配置 数组初始化小部件并返回小部件渲染后的结果. 例如如下代码插入一个 ...
- Qt Widgets——抽象滑块及其继承类
三个可视类的默认外观分别如下(win7):它们的滑块都处于最小值0处. 理解QAbstractSlider时 可将它想成就是QScrollBar(该小部件的外观比较多地拥有QAbstractSlide ...
- Qt Widgets——抽象按钮及其继承类
QAbstractButton是有关“按钮”的基类 描述了一个按钮应该具有的组成.它的公有函数如下: QAbstractButton(QWidget * parent = ) ~QAbstractBu ...
- Qt Widgets——抽象旋转框及其继承类
默认外观分别如下(win7,与上述顺序对应): 可看出,都是由一个可编辑的文本框及右端小箭头组成 QAbstractSpinBox 属性简单解释如下: Properties accelerated : ...
随机推荐
- win 10 安装visual studio 2010
链接: https://pan.baidu.com/s/1JzA2Ei8NEGRPck253NUM9g 提取码: 52pt 点击下一步即可.
- SpringBoot中加密com.github.ulisesbocchio
Jasypt Spring Boot 为 Spring Boot 项目中的属性源(property sources)提供加密支持. 有三种方法可以在项目中集成 jasypt-spring-boot: ...
- jdbcTemplate 后台接口中的分页
Springboot+jdbcTemplate 对查询结果列表做分页, 之前开发的小项目,数据逐渐增多,每次返回所有的查询结果,耗费性能和时间 想到做分页. 于是从简单的分页做起. jdbcTemp ...
- Android 虹软免费人脸识别App
人脸识别+本机Web后端 人脸sdk采用虹软sdk,本机web采用AndServer:上传姓名+人脸图片即可实现注册源码地址:https://github.com/joetang1989/ArcFac ...
- Linux学习3-yum安装java和Tomcat环境
前言 linux上安装软件,可以用yum非常方便,不需要下载解压,一个指令就能用yum安装java和tomcat环境. 前面一篇已经实现在阿里云服务器上搭建一个禅道系统的网站,算是小有成就,但并不是每 ...
- @Scope注解设置创建bean的方式和生命周期
1.1.1 Scope注解创建bean的方式和生命周期 作用 Scope设置对象在spring容器(IOC容器)中的生命周期,也可以理解为对象在spring容器中的创建方式. 取 ...
- jfinal集成cas单点认证实践
本示例jfinal集成cas单点认证,采用获取到登录用户session信息后,在本地站点备份一份session信息,主要做以下几个步骤: 1.站点引入响应jar包: 2.在web.xml中配置对应过滤 ...
- (转)Linux下设置和查看环境变量
原文地址:<Linux下设置和查看环境变量> Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1. 永久的:需要修改配置文件,变量永久生效. 2. 临时的:使用e ...
- JAVA中”单引号”,“双引号”,“没有单引号和双引号”区别:
单引号引的数据 是char类型的——>单引号只能引一个字符(表示单个字符)双引号引的数据 是String类型的——>而双引号可以引0个及其以上(引用字符串) char类型的值用单引号引起来 ...
- WIN7右键在目录当前打开命令行Cmd窗口
Win7系统大家习惯“Win+R”的组合键打开命令提示符. 2. 通常情况下,我们点击鼠标右键是没有命令行选项的.. 3.在桌面上先按住Shift键,然后鼠标右键,出现选项“在此处打开命令窗口(W)” ...