PySide6.QtGui.QKeySequence

class QKeySequence

QKeySequence 类封装了用于快捷键的键序列。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

在其最常见的形式中,键序列描述了必须一起使用以执行某些操作的键组合。键序列与QAction对象一起使用,以指定可以使用哪些键盘快捷键来触发操作。

可以通过三种不同的方式构建键序列以用作键盘快捷键:

  • 对于标准快捷键,可以使用standard key来请求与每个快捷键关联的平台特定键序列。

  • 对于自定义快捷键,可以使用人类可读的字符串,如“Ctrl+X”,并且这些字符串可以翻译成适合不同语言用户的快捷键。翻译在“QShortcut”上下文中进行。

  • 对于硬编码的快捷键,可以使用由Qt::Key和Qt::KeyboardModifier枚举值定义的值的组合来指定整数键码。每个键码由一个单一的Qt::Key值和零个或多个修饰符组成,例如Qt::ShiftModifier、Qt::ControlModifier、Qt::AltModifier和Qt::MetaModifier。

例如,Ctrl P 可能是用于打印文档的快捷键序列,可以通过以下任意一种方式指定:

QKeySequence(QKeySequence.Print)
QKeySequence(tr("Ctrl+P"))
QKeySequence(tr("Ctrl+p"))
QKeySequence(Qt.CTRL | Qt.Key_P)
QKeySequence(Qt.CTRL + Qt.Key_P) # deprecated

请注意,对于字母,规范字符串中使用的大小写并不重要。在上述示例中,用户不需要按住Shift键来激活使用“Ctrl+P”指定的快捷键。然而,对于其他键,使用Shift作为未指定的额外修饰键可能会导致键盘布局与开发者不同的应用程序用户感到困惑。有关更多详细信息,请参阅下面的键盘布局问题部分。

尽可能使用标准快捷键是更可取的。在为非标准快捷键创建键序列时,应优先使用人类可读的字符串,而不是硬编码的整数值。

QKeySequence 对象可以转换为 QString 以获取序列的人类可读翻译版本。同样,toString() 函数生成用于菜单的人类可读字符串。在 Apple 平台上,使用适当的符号来描述 Macintosh 键盘上特殊键的键盘快捷键。

指定硬编码键码的另一种方法是使用字符的Unicode代码点;例如,‘A’给出的键序列与Qt::Key_A相同。

注意

在苹果平台上,对“Ctrl”、Qt::CTRL、Qt::Key_Control和Qt::ControlModifier的引用对应于Macintosh键盘上的Command键,而对“Meta”、Qt::META、Qt::Key_Meta和Qt::MetaModifier的引用对应于Control键。实际上,开发者可以在所有平台上使用相同的快捷键描述,他们的应用程序在苹果平台上将自动按预期工作。

标准快捷键

QKeySequence 定义了许多 standard keyboard shortcuts 以减少在典型应用程序中设置操作所需的工作量。下表显示了一些常见的键序列,这些键序列通常用于四个广泛使用的平台上的应用程序中的这些标准快捷键。请注意,在苹果平台上,Ctrl 值对应于 Macintosh 键盘上的 Command 键,而 Meta 值对应于 Control 键。

StandardKey

Windows

苹果平台

KDE Plasma

GNOME

帮助内容

F1

Ctrl+?

F1

F1

WhatsThis

Shift+F1

Shift+F1

Shift+F1

Shift+F1

打开

Ctrl+O

Ctrl+O

Ctrl+O

Ctrl+O

关闭

Ctrl+F4, Ctrl+W

Ctrl+W, Ctrl+F4

Ctrl+W

Ctrl+W

保存

Ctrl+S

Ctrl+S

Ctrl+S

Ctrl+S

退出

Ctrl+Q

Ctrl+Q

Ctrl+Q

SaveAs

Ctrl+Shift+S

Ctrl+Shift+S

Ctrl+Shift+S

Ctrl+Shift+S

新建

Ctrl+N

Ctrl+N

Ctrl+N

Ctrl+N

删除

删除

向前删除, Meta+D

删除, Ctrl+D

删除, Ctrl+D

剪切

Ctrl+X, Shift+Del

Ctrl+X, Meta+K

Ctrl+X, F20, Shift+Del

Ctrl+X, F20, Shift+Del

复制

Ctrl+C, Ctrl+Ins

Ctrl+C

Ctrl+C, F16, Ctrl+Ins

Ctrl+C, F16, Ctrl+Ins

粘贴

Ctrl+V, Shift+Ins

Ctrl+V, Meta+Y

Ctrl+V, F18, Shift+Ins

Ctrl+V, F18, Shift+Ins

首选项

Ctrl+,

撤销

Ctrl+Z, Alt+Backspace

Ctrl+Z

Ctrl+Z, F14

Ctrl+Z, F14

重做

Ctrl+Y, Shift+Ctrl+Z, Alt+Shift+Backspace

Ctrl+Shift+Z

Ctrl+Shift+Z

Ctrl+Shift+Z

返回

Alt+左键, 退格键

Ctrl+[

Alt+左键

Alt+左键

前进

Alt+右, Shift+退格

Ctrl+]

Alt+右

Alt+右

刷新

F5

F5

F5

Ctrl+R, F5

ZoomIn

Ctrl+加号

Ctrl+加号

Ctrl+加号

Ctrl+加号

ZoomOut

Ctrl+减号

Ctrl+减号

Ctrl+减号

Ctrl+减号

FullScreen

F11, Alt+Enter

Ctrl+Meta+F

F11, Ctrl+Shift+F

Ctrl+F11

打印

Ctrl+P

Ctrl+P

Ctrl+P

Ctrl+P

AddTab

Ctrl+T

Ctrl+T

Ctrl+Shift+N, Ctrl+T

Ctrl+T

NextChild

Ctrl+Tab, 前进, Ctrl+F6

Ctrl+}, 前进, Ctrl+Tab

Ctrl+Tab, 前进, Ctrl+逗号

Ctrl+Tab, 前进

PreviousChild

Ctrl+Shift+Tab, 返回, Ctrl+Shift+F6

Ctrl+{, 返回, Ctrl+Shift+Tab

Ctrl+Shift+Tab, 返回, Ctrl+Period

Ctrl+Shift+Tab, 返回

查找

Ctrl+F

Ctrl+F

Ctrl+F

Ctrl+F

FindNext

F3, Ctrl+G

Ctrl+G

F3

Ctrl+G, F3

FindPrevious

Shift+F3, Ctrl+Shift+G

Ctrl+Shift+G

Shift+F3

Ctrl+Shift+G, Shift+F3

替换

Ctrl+H

(无)

Ctrl+R

Ctrl+H

SelectAll

Ctrl+A

Ctrl+A

Ctrl+A

Ctrl+A

取消选择

Ctrl+Shift+A

Ctrl+Shift+A

加粗

Ctrl+B

Ctrl+B

Ctrl+B

Ctrl+B

斜体

Ctrl+I

Ctrl+I

Ctrl+I

Ctrl+I

下划线

Ctrl+U

Ctrl+U

Ctrl+U

Ctrl+U

MoveToNextChar

右, Meta+F

MoveToPreviousChar

左, Meta+B

MoveToNextWord

Ctrl+右

Alt+右

Ctrl+右

Ctrl+右

MoveToPreviousWord

Ctrl+左键

Alt+左键

Ctrl+左键

Ctrl+左键

MoveToNextLine

向下

向下, Meta+N

向下

向下

MoveToPreviousLine

上, Meta+P

MoveToNextPage

PgDown

PgDown, Alt+PgDown, Meta+向下, Meta+PgDown, Meta+V

PgDown

PgDown

MoveToPreviousPage

PgUp

PgUp, Alt+PgUp, Meta+Up, Meta+PgUp

PgUp

PgUp

MoveToStartOfLine

首页

Ctrl+左, Meta+左

首页

首页

MoveToEndOfLine

结束

Ctrl+右, Meta+右

结束, Ctrl+E

结束, Ctrl+E

MoveToStartOfBlock

(无)

Alt+上, Meta+A

(无)

(无)

MoveToEndOfBlock

(无)

Alt+向下, Meta+E

(无)

(无)

MoveToStartOfDocument

Ctrl+Home

Ctrl+Up, Home

Ctrl+Home

Ctrl+Home

MoveToEndOfDocument

Ctrl+End

Ctrl+向下键, End

Ctrl+End

Ctrl+End

SelectNextChar

Shift+右

Shift+右

Shift+右

Shift+右

SelectPreviousChar

Shift+左键

Shift+左键

Shift+左键

Shift+左键

SelectNextWord

Ctrl+Shift+右箭头

Alt+Shift+右箭头

Ctrl+Shift+右箭头

Ctrl+Shift+右箭头

SelectPreviousWord

Ctrl+Shift+左箭头

Alt+Shift+左箭头

Ctrl+Shift+左箭头

Ctrl+Shift+左箭头

SelectNextLine

Shift+向下

Shift+向下

Shift+向下

Shift+向下

SelectPreviousLine

Shift+上

Shift+上

Shift+上

Shift+上

SelectNextPage

Shift+PgDown

Shift+PgDown

Shift+PgDown

Shift+PgDown

SelectPreviousPage

Shift+PgUp

Shift+PgUp

Shift+PgUp

Shift+PgUp

SelectStartOfLine

Shift+Home

Ctrl+Shift+Left

Shift+Home

Shift+Home

SelectEndOfLine

Shift+End

Ctrl+Shift+Right

Shift+End

Shift+End

SelectStartOfBlock

(无)

Alt+Shift+上, Meta+Shift+A

(无)

(无)

SelectEndOfBlock

(无)

Alt+Shift+向下, Meta+Shift+E

(无)

(无)

SelectStartOfDocument

Ctrl+Shift+Home

Ctrl+Shift+Up, Shift+Home

Ctrl+Shift+Home

Ctrl+Shift+Home

SelectEndOfDocument

Ctrl+Shift+End

Ctrl+Shift+向下, Shift+End

Ctrl+Shift+End

Ctrl+Shift+End

DeleteStartOfWord

Ctrl+Backspace

Alt+Backspace

Ctrl+Backspace

Ctrl+Backspace

DeleteEndOfWord

Ctrl+Del

(无)

Ctrl+Del

Ctrl+Del

DeleteEndOfLine

(无)

(无)

Ctrl+K

Ctrl+K

DeleteCompleteLine

(无)

(无)

Ctrl+U

Ctrl+U

InsertParagraphSeparator

输入

输入

输入

输入

InsertLineSeparator

Shift+Enter

Meta+Enter, Meta+O

Shift+Enter

Shift+Enter

退格键

(无)

删除, Meta+H

(无)

(无)

取消

退出

退出, Ctrl+.

退出

退出

请注意,由于标准快捷键使用的键序列在不同平台之间有所不同,您仍然需要在每个平台上测试您的快捷键,以确保您不会无意中将相同的键序列分配给多个操作。

键盘布局问题

许多关键序列规范是由开发者根据某些类型键盘的布局选择的,而不是选择代表操作名称首字母的键,例如Ctrl S(“Ctrl+S”)或Ctrl C(“Ctrl+C”)。此外,由于某些符号只能在特定键盘布局上借助修饰键输入,因此针对一种键盘布局设计的键序列可能会映射到不同的键,或者根本不映射到任何键,或者在不同键盘布局上需要使用额外的修饰键。

例如,快捷键Ctrl加号和Ctrl减号通常用作图形应用程序中的缩放操作快捷键,这些快捷键可以分别指定为“Ctrl++”和“Ctrl+-”。然而,这些快捷键的指定和解释方式取决于键盘布局。使用挪威键盘的用户会注意到+和-键在键盘上不相邻,但仍然能够在不按下Shift键的情况下激活这两个快捷键。然而,使用英国键盘的用户需要按住Shift键才能输入+符号,这使得快捷键实际上与“Ctrl+Shift+=”相同。

尽管一些开发者可能会选择完全指定他们在键盘上使用的所有修饰符来激活快捷键,但这也会导致使用不同键盘布局的用户出现意外行为。

例如,使用英国键盘的开发人员可能会决定指定“Ctrl+Shift+=”作为键序列,以创建一个巧合地与Ctrl加号行为相同的快捷方式。然而,在挪威键盘上,=键需要使用Shift键来访问,这使得所需的快捷方式实际上变成了Ctrl Shift Shift =(一个不可能的键组合)。

因此,在指定可以在各种不同键盘布局上使用的键序列时,人类可读的字符串和硬编码的键代码都可能存在问题。只有使用标准 快捷键才能保证用户能够使用开发者预期的快捷键。

尽管如此,我们可以通过确保使用人类可读的字符串来解决这个问题,从而为使用不同语言的用户提供关键序列的翻译。这种方法对于使用最典型键盘布局的用户来说将是成功的。

GNU Emacs 风格键序列

类似于GNU Emacs中使用的键序列,最多可以包含四个键码,可以通过使用多参数构造函数或传递逗号分隔的键序列的可读字符串来创建。

例如,按键序列,Ctrl X 后跟 Ctrl C,可以使用以下任一方式指定:

QKeySequence(tr("Ctrl+X, Ctrl+C"))
QKeySequence(Qt.CTRL | Qt.Key_X, Qt.CTRL | Qt.Key_C)
QKeySequence(Qt.CTRL + Qt.Key_X, Qt.CTRL + Qt.Key_C) # deprecated

警告

在创建QKeySequence之前,必须已经构建了一个QApplication实例;否则,您的应用程序可能会崩溃。

另请参阅

QShortcut

class StandardKey

此枚举表示标准键绑定。它们可用于将平台依赖的键盘快捷键分配给QAction

请注意,键绑定依赖于平台。当前绑定的快捷键可以使用keyBindings()查询。

常量

描述

QKeySequence.AddTab

添加新标签页。

QKeySequence.Back

返回上一页。

QKeySequence.Backspace

删除前一个字符。

QKeySequence.Bold

粗体文本。

QKeySequence.Close

关闭文档/标签页。

QKeySequence.Copy

复制。

QKeySequence.Cut

剪切。

QKeySequence.Delete

删除。

QKeySequence.DeleteEndOfLine

删除行尾。

QKeySequence.DeleteEndOfWord

从光标末尾删除单词。

QKeySequence.DeleteStartOfWord

删除光标前的单词开头。

QKeySequence.DeleteCompleteLine

删除整行。

QKeySequence.Find

在文档中查找。

QKeySequence.FindNext

查找下一个结果。

QKeySequence.FindPrevious

查找上一个结果。

QKeySequence.Forward

向前导航。

QKeySequence.HelpContents

打开帮助内容。

QKeySequence.InsertLineSeparator

插入一个新行。

QKeySequence.InsertParagraphSeparator

插入一个新段落。

QKeySequence.Italic

斜体文本。

QKeySequence.MoveToEndOfBlock

将光标移动到块的末尾。此快捷键仅在苹果平台上使用。

QKeySequence.MoveToEndOfDocument

将光标移动到文档末尾。

QKeySequence.MoveToEndOfLine

将光标移动到行尾。

QKeySequence.MoveToNextChar

将光标移动到下一个字符。

QKeySequence.MoveToNextLine

将光标移动到下一行。

QKeySequence.MoveToNextPage

将光标移动到下一页。

QKeySequence.MoveToNextWord

将光标移动到下一个单词。

QKeySequence.MoveToPreviousChar

将光标移动到前一个字符。

QKeySequence.MoveToPreviousLine

将光标移动到上一行。

QKeySequence.MoveToPreviousPage

将光标移动到上一页。

QKeySequence.MoveToPreviousWord

将光标移动到上一个单词。

QKeySequence.MoveToStartOfBlock

将光标移动到块的开始。此快捷键仅在苹果平台上使用。

QKeySequence.MoveToStartOfDocument

将光标移动到文档的开头。

QKeySequence.MoveToStartOfLine

将光标移动到行首。

QKeySequence.New

创建新文档。

QKeySequence.NextChild

导航到下一个标签页或子窗口。

QKeySequence.Open

打开文档。

QKeySequence.Paste

粘贴。

QKeySequence.Preferences

打开首选项对话框。

QKeySequence.PreviousChild

导航到上一个标签页或子窗口。

QKeySequence.Print

打印文档。

QKeySequence.Quit

退出应用程序。

QKeySequence.Redo

重做。

QKeySequence.Refresh

刷新或重新加载当前文档。

QKeySequence.Replace

查找并替换。

QKeySequence.SaveAs

在提示用户输入文件名后保存文档。

QKeySequence.Save

保存文档。

QKeySequence.SelectAll

选择所有文本。

QKeySequence.Deselect

取消选择文本。自5.1版本起

QKeySequence.SelectEndOfBlock

将选择扩展到文本块的末尾。此快捷键仅在苹果平台上使用。

QKeySequence.SelectEndOfDocument

将选择扩展到文档末尾。

QKeySequence.SelectEndOfLine

将选择扩展到行尾。

QKeySequence.SelectNextChar

将选择扩展到下一个字符。

QKeySequence.SelectNextLine

将选择扩展到下一行。

QKeySequence.SelectNextPage

将选择扩展到下一页。

QKeySequence.SelectNextWord

将选择扩展到下一个单词。

QKeySequence.SelectPreviousChar

将选择扩展到前一个字符。

QKeySequence.SelectPreviousLine

将选择扩展到上一行。

QKeySequence.SelectPreviousPage

将选择扩展到上一页。

QKeySequence.SelectPreviousWord

将选择扩展到前一个单词。

QKeySequence.SelectStartOfBlock

将选择扩展到文本块的开头。此快捷键仅在Apple平台上使用。

QKeySequence.SelectStartOfDocument

将选择扩展到文档的开头。

QKeySequence.SelectStartOfLine

将选择扩展到行首。

QKeySequence.Underline

下划线文本。

QKeySequence.Undo

撤销。

QKeySequence.UnknownKey

未绑定的键。

QKeySequence.WhatsThis

激活“这是什么”。

QKeySequence.ZoomIn

放大。

QKeySequence.ZoomOut

缩小。

QKeySequence.FullScreen

切换窗口状态为全屏或从全屏切换回来。

QKeySequence.Cancel

取消当前操作。

class SequenceFormat

常量

描述

QKeySequence.NativeText

键序列作为平台特定的字符串。这意味着它将显示为翻译后的文本,并且在苹果平台上它将类似于菜单栏中的键序列。当您想向用户显示字符串时,最好使用此枚举。

QKeySequence.PortableText

键序列以“便携”格式给出,适合读取和写入文件。在许多情况下,它看起来类似于Windows和X11上的本地文本。

class SequenceMatch

常量

描述

QKeySequence.NoMatch

键序列不同;甚至没有部分匹配。

QKeySequence.PartialMatch

键序列部分匹配,但不完全相同。

QKeySequence.ExactMatch

键序列是相同的。

__init__()

构造一个空的键序列。

__init__(key)
Parameters:

keyStandardKey

为给定的key构造一个QKeySequence对象。结果将取决于当前运行的平台。

生成的对象将基于key的键绑定列表中的第一个元素。

__init__(ks)
Parameters:

ksQKeySequence

复制构造函数。创建keysequence的副本。

__init__(key[, format=QKeySequence.SequenceFormat.NativeText])
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

key字符串创建一个键序列,基于format

例如“Ctrl+O”给出CTRL+’O’。字符串“Ctrl”、“Shift”、“Alt”和“Meta”被识别,以及它们在“QShortcut”上下文中的翻译等效项(使用QObject::tr())。

最多可以输入四个键码,用逗号分隔,例如“Alt+X,Ctrl+S,Q”。

此构造函数通常与 tr() 一起使用,以便可以在翻译中替换快捷键:

file = QMenu(self)
file.addAction(tr("Open..."), QKeySequence(tr("Ctrl+O", "File|Open")),
                self.open)

注意“File|Open”翻译者注释。这绝不是必要的,但它为人类翻译者提供了一些上下文。

__init__(k1[, k2=QKeyCombination.fromCombined(0)[, k3=QKeyCombination.fromCombined(0)[, k4=QKeyCombination.fromCombined(0)]]])
Parameters:

构造一个最多包含4个键的键序列 k1, k2, k3k4

另请参阅

QKeyCombination

__init__(k1[, k2=0[, k3=0[, k4=0]]])
Parameters:
  • k1 – 整数

  • k2 – 整数

  • k3 – int

  • k4 – int

构造一个最多包含4个键的键序列 k1, k2, k3k4

关键代码列在Qt::Key中,并且可以与修饰符(参见Qt::KeyboardModifier)组合使用,例如Qt::ShiftModifier、Qt::ControlModifier、Qt::AltModifier或Qt::MetaModifier。

__getitem__()
__reduce__()
Return type:

字符串

__repr__()
Return type:

字符串

count()
Return type:

整数

返回键序列中的键数。最大值为4。

static fromString(str[, format=QKeySequence.SequenceFormat.PortableText])
Parameters:
Return type:

QKeySequence

根据format从字符串str返回一个QKeySequence

另请参阅

toString()

isEmpty()
Return type:

布尔

如果键序列为空,则返回true;否则返回false。

static keyBindings(key)
Parameters:

keyStandardKey

Return type:

QKeySequence的列表

返回给定key的键绑定列表。调用此函数的结果将根据目标平台而有所不同。列表的第一个元素表示给定平台的主要快捷键。如果结果包含多个结果,这些可以被视为同一平台上给定key的替代快捷键。

static listFromString(str[, format=QKeySequence.SequenceFormat.PortableText])
Parameters:
Return type:

QKeySequence的列表

根据format从字符串str返回一个QKeySequence的列表。

static listToString(list[, format=QKeySequence.SequenceFormat.PortableText])
Parameters:
Return type:

字符串

返回基于formatlist的字符串表示。

matches(seq)
Parameters:

seqQKeySequence

Return type:

SequenceMatch

将序列与seq进行匹配。如果成功,返回ExactMatch;如果seq部分匹配,返回PartialMatch;如果序列没有共同点,返回NoMatch。如果seq较短,则返回NoMatch

static mnemonic(text)
Parameters:

文本 – str

Return type:

QKeySequence

返回text中助记符的快捷键序列,如果未找到助记符,则返回空键序列。

例如,mnemonic(“E&xit”) 返回 Qt::ALT+Qt::Key_X,mnemonic(”&Quit”) 返回 ALT+Key_Q,而 mnemonic(“Quit”) 返回一个空的 QKeySequence

__ne__(other)
Parameters:

其他QKeySequence

Return type:

布尔

如果此键序列不等于other键序列,则返回true;否则返回false

__lt__(ks)
Parameters:

ksQKeySequence

Return type:

布尔

提供此键序列与other键序列的任意比较。唯一保证的是,如果两个键序列相等,则运算符返回false,如果键序列不相等,则(ks1 < ks2) == !( ks2 < ks1)。

此函数在某些情况下非常有用,例如,如果您想使用QKeySequence对象作为QMap中的键。

另请参阅

operator==() operator!=() operator>() operator operator>=()

__le__(other)
Parameters:

其他QKeySequence

Return type:

布尔

如果此键序列小于或等于other键序列,则返回true;否则返回false

另请参阅

operator==() operator!=() operator operator>() operator>=()

__eq__(other)
Parameters:

其他QKeySequence

Return type:

布尔

如果此键序列等于other键序列,则返回true;否则返回false

__gt__(other)
Parameters:

其他QKeySequence

Return type:

布尔

如果此键序列大于other键序列,则返回true;否则返回false

另请参阅

operator==() operator!=() operator operator operator>=()

__ge__(other)
Parameters:

其他QKeySequence

Return type:

布尔

如果此键序列大于或等于other键序列,则返回true;否则返回false

另请参阅

operator==() operator!=() operator operator>() operator

swap(other)
Parameters:

其他QKeySequence

将此键序列与other键序列交换。此操作非常快速且永远不会失败。

toString([format=QKeySequence.SequenceFormat.PortableText])
Parameters:

formatSequenceFormat

Return type:

字符串

返回基于format的键序列的字符串表示。

例如,值 Qt::CTRL+Qt::Key_O 的结果是“Ctrl+O”。如果键序列有多个键码,每个键码在返回的字符串中用逗号分隔,例如“Alt+X, Ctrl+Y, Z”。字符串“Ctrl”、“Shift”等在“QShortcut”上下文中使用 QObject::tr() 进行翻译。

如果键序列没有键,则返回一个空字符串。

在苹果平台上,如果formatNativeText,返回的字符串类似于菜单栏中显示的序列;否则,字符串使用“便携式”格式,适合写入文件。

另请参阅

fromString()