【Qt开发】QToolBox/QToolButton/QListWidget

QToolBox

					QToolBox

QToolBox是工具箱组件类,是一种垂直页的多页容器组件。
在UI可视化设计时,在工具箱组件上点击鼠标右键调出快捷菜单,分别可以使用Insert Page和Delete Page菜单项添加页和删除页。

UI可视化设计的效果图:
在这里插入图片描述
工具箱的每个页面都是一个QWidget的组件,在页面的工作区可以放置任何其他界面组件

QToolBox有一个信号currentChanged(),在切换页面时组件发射此信号,其函数原型定义如下:

参数index表示当前页面序号
void QToolBox::currentChanged(int index);

QToolBox类提供了用于页面控制、属性控制的各类接口,如图,详细查阅QT官方文档
在这里插入图片描述

QToolButton

					QToolButton

QToolButton是工具按钮

QToolButton有几个新定义的属性:
在这里插入图片描述
1)popupMode属性:当按钮有下拉菜单时,此属性决定了下拉菜单的模式

  • QToolButton::DelayedPopup:如果按钮有下拉菜单,按下按钮并延时一会后,才显示下拉菜单
  • QToolButton::MenuButtonPopup:会在按钮右侧显示一个带箭头图标的下拉按钮,点击下拉按钮才显示下拉菜单。
  • QToolButton::InstantPopup:会在按钮的右下角显示一个很小的下拉箭头图标,点击下拉按钮才显示下拉菜单。

2)toolButtonStyle属性:表示工具按钮上文字与图标的显示方式

  • QToolButton::ToolButtonIconOnly:仅显示图标
  • QToolButton::ToolButtonTextOnly:仅显示文字
  • QToolButton::ToolButtonTextBesideIcon:文字在图标旁边
  • QToolButton::ToolButtonUnderTextIcon:文字在图标下面
  • QToolButton::ToolButtonFollowStyle:根据QStyle::StyleHint格式显示

3)autoRaise属性:如果设置为true,按钮就没有边框,鼠标移动到按钮上才显示按钮边框

4)arrowType属性:表示按钮上箭头的方向

  • QToolButton::NoArrow:没有图标
  • 其他四个枚举类型表示四个方向的图标

QToolButton的其他接口函数:

void QToolButton::setDefaultction(QAction *action);
这个函数用于为工具按钮设置关联的Action。
设置关联的Action后,工具按钮的文字、图标、提示
等属性和关联的Action一样,
工具案件的triggered()信号自动关联Action的triggered()信号。
void QToolButton::setMenu(QMenu *menu);
设置工具按钮的下拉菜单

其他公共接口函数:
在这里插入图片描述

QListWidget

							QListWidget

在这里插入图片描述
QListWidget的每一个节点是一个项,一个项存储了文字、文字的格式定义、图标、用户数据等内容。

QListWidget的列表项是QListWidgetItem对象。在UI可视化设计时,编译器可以对没一个项进行设置。QListWidgetItem没有父类,所以没有属性,但它有一些读取函数、设置函数。

QListWidgetItem用表格展示:

读取函数设置函数数据类型设置函数的功能
text()setText()QString设置项的文字
icon()setIcon()QIcon设置项的图标
data()setData()QVariant为项的不同角色设置数据,可设置用户数据
flags()setFlags()Qt::ItemFlags设置项的特性,是枚举类型
checkState()setCheckState()Qt::CheckState设置项的复选状态
isSelected()setSelected()bool设置为当前项,相当于点击了这个项

QListWidgetItem还有一个标志变量flags,用来设置列表项的特性,flags是枚举类型Qt::ItemFlag的枚举类型的组合

在这里插入图片描述

  • Selectable:列表可以被选择,对应枚举类型Qt::ItemIsSelectable
  • Editable:列表可以被编辑,对应枚举类型Qt::ItemIsEnabled
  • DragEnabled:列表项可以被拖动,对应枚举类型Qt::ItemIsDragEnabled
  • DropEnabled:列表项可以接收拖动的项,对应枚举类型Qt::ItemIsDropEnabled
  • UserCheckable:列表项可以被复选,对应枚举类型Qt::ItemIsUserCheckable
  • Enabled:列表项可用,对应枚举类型Qt::ItemIsEnabled
  • Tristate:自动改变列表的复选状态,对应枚举类型Qt::ItemIsAutoTristate。该特性对QTreeWidget的节点有效,对QListWidget的列表项无效
源码:
enum ItemFlag {
        NoItemFlags = 0,
        ItemIsSelectable = 1,
        ItemIsEditable = 2,
        ItemIsDragEnabled = 4,
        ItemIsDropEnabled = 8,
        ItemIsUserCheckable = 16,
        ItemIsEnabled = 32,
        ItemIsAutoTristate = 64,
#if QT_DEPRECATED_SINCE(5, 6)
        ItemIsTristate = ItemIsAutoTristate,
#endif
        ItemNeverHasChildren = 128,
        ItemIsUserTristate = 256
    };

设置拖动时,还需要设置

ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove);

QListWidget类主要接口:

							添加或删除项
函数名功能
void addItem()添加项
void insertItem()插入项
在这里插入图片描述
在这里插入图片描述
函数名功能
QListWidgetItem *takeItem()从列表组件中移除一个项,并返回这个项的对象指针,但是并不会在内存中删除这个项,需要delete 返回的指针
void clear()移除列表中的所有的项,并且从内存中删除对象
在这里插入图片描述
								项的访问
函数名功能
QListWidgetItem *currentItem()返回当前项的指针,没有则返回nullptr
void setCurrentItem()设置当前项
QListWidgetItem *item()根据行号返回一个项
QListWidgetItem *itemAt()根据屏幕坐标返回项,例如鼠标在列表组件上移动时,可以用这个函数返回光标所在项
int currentRow()返回当前项的行号,没有则返回-1
void setCurrentRow()设置当前行
int row()返回一个项的所在行的行号
int count()返回列表组件中项的个数
								排序
函数名功能
void setSortingEnabled()设置列表是否可有排序
bool isSortingEnabled()列表是否可排序
void sortItem()对列表进行排序,可指定排序方式为升序或降序;Qt::AscendingOrder(升序);Qt::DescendingOrder(降序)

在这里插入图片描述

									信号

在这里插入图片描述

								创建右键快捷菜单

每一个继承Widget的类都有customContextMenuRequested()信号,在一个组件上点击鼠标右键时,组件发射这个信号,用于请求创建快捷菜单。如果为此信号编写槽函数,就可以创建和运行快捷次菜单。

在使用之前,还需要设置其contextMenuPolicy属性,设置该属性的函数原型如下:

void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
  • Qt::NoContextMenu:组件没有快捷菜单,由其父类处理快捷菜单
  • Qt::PreventContextMenu:阻止快捷菜单,并且点击鼠标右键事件也不会交给父类容器组件处理
  • Qt::DefaultContextMenu:默认快捷菜单,组件QWidget::contextMenuEvent()事件被自动处理。有些组件有自己的默认快捷菜单。在无须任何编程的情况下,运行时点击鼠标右键就会出现一个标准的编辑操作快捷菜单
  • Qt::ActionsContextMenu:自动根据QWidget::actions()返回的Action列表创建并显示快捷菜单
  • Qt::CustomContextMenu:由用户编程实现创建 并显示快捷菜单

先将属性设置为Qt::CustomContextMenu,再编写槽函数,来自定义实现快捷菜单

void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{
    //O_UNUSED(pos);
    QMenu *menuList=new QMenu(this);
    menuList->addAction(ui->action);
    menuList->addAction(ui->action_2);
    menuList->addAction(ui->action_3);
    menuList->addAction(ui->action_4);
    menuList->addAction(ui->action_5);
    menuList->addAction(ui->action_6);
    menuList->addAction(ui->action_7);
    menuList->addAction(ui->action_8);
    menuList->addAction(ui->action_9);
    menuList->addAction(ui->action_10);
	
	//在鼠标光标位置显示快捷菜单
    menuList->exec(QCursor::pos());
    delete menuList;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世_生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值