菜单栏。
二、属性成员
1、defaultUp : bool
菜单弹出方向。默认情形下,菜单“向下”弹出屏幕。
如果菜单不适宜屏幕,则自动利用另一个方向。
2、nativeMenuBar : bool
菜单栏是否将在支持它的平台上用作本机菜单栏。
当前支持的平台是 macOS 和利用 com.canonical.dbusmenu D-Bus 接口的 Linux 桌面(例如 Ubuntu Unity)。 如果该属性为true,则菜单栏在本机菜单栏中利用,不在其父级的窗口中;如果为 false,则菜单栏保留在窗口中。在其他平台上,设置这个属性是没有效果的,读取这个属性总是会返回 false。
默认遵照是否为运用程序设置了 Qt::AA_DontUseNativeMenuBar 属性。显式设置此属性会覆盖属性。
三、函数成员
1、【旗子暗记】void hovered(QAction action)
当一个菜单动作被高亮时,这个旗子暗记被发出;action 是导致事宜被发送的动作。
2、【旗子暗记】void triggered(QAction action)
当鼠标单击触发属于该菜单栏的菜单中的动作时,会发出此旗子暗记;action 是导致旗子暗记发射的动作。
把稳:QMenuBar 必须拥有 QMenu 的所有权才能使此旗子暗记起浸染。
常日利用 QAction::triggered() 将每个菜单操作连接到单个槽,但有时希望将多个项目连接到单个槽(最常见的是如果用户从数组中选择)。该旗子暗记在这种情形下很有用。
3、QAction actionAt(const QPoint &pt)
返回 pt 处的 QAction。如果 pt 处没有动作或该位置有分隔符,则返回 nullptr。
4、QRect actionGeometry(QAction act)
返回动作 act 的几何形状。
5、QAction activeAction() / void setActiveAction(QAction act)
返回当前突出显示的 QAction(如果有),否则返回 nullptr。
6、QAction addAction(const QString &text)
创建一个带有文本的新动作。该函数将新创建的动作添加到菜单的动作列表中(QWidget::addAction(QAction action)),并将其返回。
QAction addAction(const QString &text, const QObject receiver, const char member)template <typename Obj, typename PointerToMemberFunctionOrFunctor> QAction addAction(const QString &text, const Obj receiver, PointerToMemberFunctionOrFunctor method)
利用给定的文本创建一个新动作。动作的 trigger() 旗子暗记连接到 receiver 的成员槽 member / 成员函数 method。该函数将新创建的动作添加到菜单的动作列表中并返回它。
template <typename Functor> QAction addAction(const QString &text, Functor functor)
利用给定的文本创建一个新动作。动作的 trigger() 旗子暗记连接到函子。该函数将新创建的动作添加到菜单的动作列表中并返回它。
7、QAction addMenu(QMenu menu)
将菜单附加到菜单栏。返回菜单的 QMenu::menuAction()。 菜单栏不拥有菜单的所有权。
返回的 QAction 工具可以用来隐蔽对应的菜单。
QMenu addMenu(const QString &title)QMenu addMenu(const QIcon &icon, const QString &title)
将带有标题、图标的新 QMenu 附加到菜单栏。菜单栏拥有菜单的所有权。返回新菜单。
8、QAction addSeparator()
将分隔符附加到菜单栏。
9、void clear()
从菜单栏中删除所有动作。
在 macOS 上,已合并到系统菜单栏的菜单项不会被此功能删除。可以自行删除之。
10、void setCornerWidget(QWidget widget, Qt::Corner corner = Qt::TopRightCorner)
QWidget cornerWidget(Qt::Corner corner = Qt::TopRightCorner)
将给定的小部件设置为直接显示在第一个菜单项的左侧或末了一个菜单项的右侧。
菜单栏拥有小部件的所有权。但是,如果角落已经包含一个小部件,则这个先前的小部件将不再被管理,并且仍将是菜单栏的可见子项。
把稳:利用 Qt::TopRightCorner 或 Qt::TopLeftCorner 以外的角会导致警告。
11、void initStyleOption(QStyleOptionMenuItem option, const QAction action)
利用菜单栏中的值和动作中的信息初始化选项。当子类须要一个 QStyleOptionMenuItem 但又不想自己填写所有信息时,此方法很有用。
12、QAction insertMenu(QAction before, QMenu menu)
在动作之前插入菜单并返回菜单 menuAction()。
13、QAction insertSeparator(QAction before)
创建一个新的分隔符动作,即一个 QAction::isSeparator() 返回 true 的动作。插入到 before 之前并返回它。
14、NSMenu toNSMenu()
返回此菜单栏的本机 NSMenu。仅在 macOS 上可用。
【领QT开拓教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】
点击这里:「链接」
QMenu
一、描述
QMenu 类供应了菜单小部件。
二、属性成员
1、icon : QIcon
菜单的图标。这等效于 menuAction() 的 QAction::icon 属性。
2、separatorsCollapsible : bool
连续分隔符是否应在视觉上折叠为单个分隔符,菜单开头或结尾的分隔符也被隐蔽。
默认为 true。
3、tearOffEnabled : bool
菜单是否可分开。默认为 false。
hideTearOffMenu() 将逼迫隐蔽分开的菜单,使其从用户桌面上消逝。isTearOffMenuVisible() 是否处于分开状态。showTearOffMenu() / showTearOffMenu(const QPoint &pos) 显示分开的菜单,使其涌如今用户桌面上指定的全局位置 pos。
4、title : QString
菜单的标题。这等效于 menuAction() 的 QAction::text 属性。
5、toolTipsVisible : bool
动作菜单条款是否显示其工具提示。默认为 false。
三、成员函数
1、【旗子暗记】void aboutToHide()
该旗子暗记在菜单对用户隐蔽之前发出。
2、【旗子暗记】void aboutToShow()
该旗子暗记在菜单显示给用户之前发出。
3、【旗子暗记】void hovered(QAction action)
当一个菜单动作被高亮时,这个旗子暗记被发出;action 是导致旗子暗记发射的动作。
4、void triggered(QAction action)
触发此菜单中的动作时会发出此旗子暗记。action 是导致旗子暗记发射的动作。
5、QAction actionAt(const QPoint &pt)
返回 pt 处的项目;如果那里没有项目,则返回 nullptr。
6、QRect actionGeometry(QAction act)
返回动作动作的几何形状。
7、QAction activeAction() / void setActiveAction(QAction act)
当前突出显示的动作。
8、QAction addAction(const QString &text)
QAction addAction(const QIcon &icon, const QString &text)
创建一个带有文本的新动作。将新创建的动作添加到菜单的动作列表中(QWidget::addAction()),并将其返回。
QMenu 拥有返回的 QAction。
QAction addAction(const QString &text, const QObject receiver, const char member, const QKeySequence &shortcut = {})QAction addAction(const QIcon &icon, const QString &text, const QObject receiver, const char member, const QKeySequence &shortcut = {})
利用文本、图标和快捷办法创建一个新动作。动作的 trigger() 旗子暗记连接到 receiver 的成员槽member。 该函数将新创建的动作添加到菜单的动作列表中并返回它。
QMenu 拥有返回的 QAction。
template <typename Functor> QAction addAction(const QString &text, Functor functor, const QKeySequence &shortcut = 0)template <typename Functor> QAction addAction(const QString &text, const QObject context, Functor functor, const QKeySequence &shortcut = 0)template <typename Functor> QAction addAction(const QIcon &icon, const QString &text, Functor functor, const QKeySequence &shortcut = 0)template <typename Functor> QAction addAction(const QIcon &icon, const QString &text, const QObject context, Functor functor, const QKeySequence &shortcut = 0)
创建一个新动作。动作的 trigger() 旗子暗记连接到函子。该函数将新创建的动作添加到菜单的动作列表中并返回它。
QMenu 拥有返回的 QAction。
9、QAction addMenu(QMenu menu)
将 menu 作为子菜单添加到此菜单。它返回菜单的 menuAction()。此菜单不拥有 menu 的所有权。
QMenu addMenu(const QString &title)QMenu addMenu(const QIcon &icon, const QString &title)
将带有标题的新 QMenu 添加到菜单。此菜单拥有新菜单的所有权。返回添加的新菜单。
10、QAction addSection(const QString &text)
QAction addSection(const QIcon &icon, const QString &text)
创建一个带有 QAction::isSeparator() 返回 true 但也有文本提示 \ 图标的动作,并将新动作添加到这个菜单的动作列表中。返回新创建的动作。
QMenu 拥有返回的 QAction。
11、QAction addSeparator()
创建一个新的分隔符动作,即一个 QAction::isSeparator() 返回 true 的动作,并将新操作添加到此菜单的操作列表中。返回新创建的动作。
QMenu 拥有返回的 QAction。
12、void clear()
删除所有菜单的动作。
13、int columnCount()
返回所需的列数。如果菜单不适宜屏幕,它会自行支配以使其适宜(如折叠隐蔽一部分菜单)。
14、QAction defaultAction() / void setDefaultAction(QAction act)
当前的默认动作。
15、QAction exec()
同步实行此菜单。这等效于 exec(pos())。
这将在弹出菜单或其子菜单之一中返回触发的 QAction,如果没有触发任何项目(常日是由于用户按下 Esc),则返回 nullptr。
在大多数情形下,须要自己指定位置,例如,当前鼠标位置:
exec(QCursor::pos());
或与小部件对齐:
exec(somewidget.mapToGlobal(QPoint(0,0)));
或相应 QMouseEvent e,对齐到事宜发生时鼠标光标的全局位置:
exec(e->globalPosition().toPoint());QAction exec(const QPoint &p, QAction action = nullptr)
同步实行此菜单。
弹出菜单,使 action 在指定的全局位置 p。要将小部件确当地坐标转换为全局坐标,请利用 QWidget::mapToGlobal()。
【static】QAction exec(const QList<QAction > &actions, const QPoint &pos, QAction at = nullptr, QWidget parent = nullptr)
同步实行菜单。
菜单的动作由 actions 指定。将弹出菜单,以便指定的动作 at 涌如今全局位置 pos。 如果未指定 at,则菜单涌如今位置 pos。
该函数在弹出菜单或其子菜单之一中返回触发的 QAction,如果没有触发任何项目(常日是由于用户按下 Esc),则返回 nullptr。
这相称于:
QMenu menu;QAction at = actions[0];for (QAction a : qAsConst(actions))//利用qAsConst避免任何拷贝menu.addAction(a);menu.exec(pos, at);
16、void initStyleOption(QStyleOptionMenuItem option, const QAction action)
利用此菜单中的值和动作中的信息初始化选项。当子类须要一个 QStyleOptionMenuItem 但又不想自己填写所有信息时,此方法很有用。
17、QAction insertMenu(QAction before, QMenu menu)
在 before 之前插入菜单并返回菜单 menuAction()。
18、QAction insertSection(QAction before, const QString &text)
QAction insertSection(QAction before, const QIcon &icon, const QString &text)
创建了一个新的标题动作,即一个带有 QAction::isSeparator() 返回 true 但也有文本提示的动作。该函数将新创建的动作插入到此菜单的动作列表中,然后将其返回。
QMenu 拥有返回的 QAction。
19、QAction insertSeparator(QAction before)
创建一个新的分隔符动作,即一个 QAction::isSeparator() 返回 true 的操作。该函数将新创建的动作插入到此菜单的动作列表中,然后将其返回。
QMenu 拥有返回的 QAction。
20、bool isEmpty()
菜单中是否没有插入可见动作。
21、QAction menuAction()
返回与此菜单关联的动作。
22、void popup(const QPoint &p, QAction atAction = nullptr)
显示菜单,以便动作 atAction 位于指定的全局位置 p。要将小部件确当地坐标转换为全局坐标,请利用 QWidget::mapToGlobal()。
23、void setAsDockMenu()
通过选项单击运用程序停靠图标,将此菜单设置为可用的停靠菜单。 仅在 macOS 上可用。
24、NSMenu toNSMenu()
返回此菜单的本机 NSMenu。仅在 macOS 上可用。
QDialog一、描述
对话窗口是一个顶层窗口,紧张用于短期任务和与用户的简短互换。QDialogs 可以是模态的或非模态的。
QDialog(以及任何其他类型为 Qt::Dialog 的小部件)利用父小部件与 Qt 中的其他类略有不同。对话框始终是顶级小部件,但如果它有父级,则其默认位置位于父级顶级小部件的顶部(如果它本身不是顶级)。它还将共享父级的任务栏条款。
1.1、模态对话框
模态对话框是阻挡输入到同一运用程序中其他可见窗口的对话框。用于向用户要求文件名或用于设置运用程序首选项的对话框常日是模态的。
当打开运用程序模态对话框时,用户必须完成与对话框的交互并关闭它,然后才能访问运用程序中的任何其他窗口。窗口模态对话框仅阻挡访问与对话框关联的窗口,许可用户连续利用运用程序中的其他窗口。
显示模态对话框的最常见方法是调用其 exec() 函数。当用户关闭对话框时, exec() 将供应一个有用的返回值。要关闭对话框并返回适当的值,必须连接一个默认按钮,例如 accept() 槽的 OK 按钮和 reject() 槽的 Cancel 按钮。或者,可以利用 Accepted 或 Rejected 调用 done() 槽。
另一种方法是调用 setModal(true) 或 setWindowModality(),然后调用 show()。与 exec() 不同,show() 立即将掌握权返回给调用者。调用 setModal(true) 对付进度对话框特殊有用,个顶用户必须具有与对话框交互的能力,例如取消永劫光运行的操作。如果同时利用 show() 和 setModal(true) 实行长操作,则必须在处理过程中定期调用 QCoreApplication::processEvents() 以利用户能够与对话框进行交互。
1.2、非模态对话框
非模态对话框是独立于同一运用程序中的其他窗口运行的对话框。
利用 show() 显示非模态对话框,它立即将掌握权返回给调用者。
1.3、默认按钮
对话框的默认按钮是用户按下 Enter(返回)时按下的按钮。此按钮用于表示用户接管对话框的设置并希望关闭对话框。利用 QPushButton::setDefault() 来设置和掌握对话框的默认按钮。
1.4、Esc 键
如果用户在对话框中按下 Esc 键,reject() 将被调用。这将导致窗口关闭:不能忽略关闭事宜。
1.5、返回值(模态对话框)
模态对话框常日用于须要返回值的情形,例如指示用户是按下确定还是取消。可以通过调用accept() 或 reject() 槽来关闭对话框,并且 exec() 将根据须要返回 Accepted 或 Rejected。exec() 调用返回对话框的结果。如果对话框没有被销毁,结果也可以从 result() 中得到。
为了修正对话框的关闭行为,可以重新实现函数 accept()、reject() 或 done()。closeEvent() 函数只应重新实现以保留对话框的位置或覆盖标准关闭或谢绝行为。
1.6、代码示例
模态对话框:
void EditorWindow::countWords(){WordCountDialog dialog(this);dialog.setWordCount(document().wordCount());dialog.exec();}
非模态对话框:
void EditorWindow::find(){if (!findDialog) {findDialog = new FindDialog(this);connect(findDialog, &FindDialog::findNext, this, &EditorWindow::findNext);}findDialog->show();findDialog->raise();findDialog->activateWindow();}
二、类型成员
1、enum QDialog::DialogCode:模态对话框返回的值。
QDialog::Accepted:接管QDialog::Rejected:谢绝三、属性成员
1、modal : bool
show() 是否应以模态弹出对话框。
默认为 false,并且 show() 将对话框弹出为无模态。将此属性设置为 true 等效于将 QWidget::windowModality 设置为 Qt::ApplicationModal。
exec() 忽略此属性的值并始终以模态弹出对话框。
2、sizeGripEnabled : bool
是否启用大小把手。默认为 false。
启用此属性时,QSizeGrip 将放置在对话框的右下角。
四、成员函数
1、QDialog(QWidget parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
对话框始终是顶级小部件,但如果它有父级,则其默认位置位于父级的顶部。 它还将共享父级的任务栏条款。
小部件标志 f 被通报给 QWidget 布局函数。
2、【virtual】void accept()
隐蔽模式对话框并将结果代码设置为 Accepted。
3、【旗子暗记】void accepted()
利用 QDialog::Accepted 参数调用 accept() 或 done() 接管对话框时,将发出此旗子暗记。
请把稳,利用 hide() 或 setVisible(false) 隐蔽对话框时不会发出此旗子暗记。
4、【virtual】void done(int r)
关闭对话框并将其结果代码设置为 r。 finished() 旗子暗记将发出 r; 如果 r 是 QDialog::Accepted 或 QDialog::Rejected,accepted() 或 denied() 旗子暗记也将分别发出。
若此对话框与 exec() 一起显示,则 done() 也会导致本地事宜循环完成,且 exec() 返回 r。
如果设置了 Qt::WA_DeleteOnClose 标志,则 done() 会删除对话框。如果对话框是运用程序的紧张小部件,则运用程序终止。如果对话框是末了一个关闭的窗口,则发出 QGuiApplication::lastWindowClosed() 旗子暗记。
5、【virtual】int exec()
将对话框显示为模态对话框,在用户关闭它之前一贯处于壅塞状态。该函数返回一个 DialogCode 结果。
可见代码里面开启了一个事宜循环。
把稳:
当对话框有父级时该当应避免利用此功能,而是利用 open()。 与 exec() 不同,open() 是异步的,并且可以防止发生一系列危险的缺点(例如,在通过 exec() 打开对话框时删除对话框的父级)。利用 open() 时,可以连接到 QDialog 的 finished() 旗子暗记,以便在对话框关闭时得到关照。
QDialog w = new QDialog(this);w->setAttribute(Qt::WA_DeleteOnClose);w->open();
当对话框没有父级时,利用 open() 没有模态效果。
6、【旗子暗记】void finished(int result)
当用户或通过调用 done()、accept() 或 reject() 设置对话框的结果代码时,会发出此旗子暗记。
利用 hide() 或 setVisible(false) 隐蔽对话框时不会发出此旗子暗记。
7、【virtual】void open()
将对话框显示为窗口模式对话框,立即返回。
8、【virtual】void reject()
隐蔽模式对话框并将结果代码设置为 Rejected。
9、【旗子暗记】void rejected()
当对话框被用户谢绝或利用 Rejected 参数调用 reject() 或 done() 时,会发出此旗子暗记。
利用 hide() 或 setVisible(false) 隐蔽对话框时不会发出此旗子暗记。
10、int result()
返回模态对话框的结果代码,Accepted 或 Rejected。
把稳:如果对话框是利用 Qt::WA_DeleteOnClose 属性布局的,则不要调用此函数。
11、void setResult(int i)
将模式对话框的结果代码设置为 i。
【领QT开拓教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】
点击这里:Qt资料领取(视频教程+文档+代码+项目实战)
原文链接:https://blog.csdn.net/kenfan1647/article/details/122902991