QT6中Commd Link Button,Dialog Button Box,Tool Button 功能与应用
一.QCommandLinkButton (命令链接按钮)
1.简介
QCommandLinkButton 继承自 QPushButton,但它提供了比普通按钮更丰富的视觉外观,主要用于向导(Wizard)或设置对话框中,引导用户进行下一步操作。
2.功能与特点
外观:通常由一个箭头图标、一个标题和一段描述性文本组成。
设计初衷:模仿 Windows Vista/7 及之后系统中的“命令链接”控件,用于在多个互斥选项中选择一项。
交互:单击后通常会执行操作并前进到下一个界面或步骤。
自动独占:在父容器中,QCommandLinkButton 默认是互斥的(类似于单选按钮),选中一个会自动取消选中其他同组的命令链接按钮。
3.代码示例
//创建命令链接按钮
QCommandLinkButton *btnBasic = new QCommandLinkButton(
"&基本安装", // 标题 (支持助记符 &B)
"安装最常用的组件,推荐大多数用户使用。", // 描述
this
);
btnBasic->setGeometry(50, 100, 300, 60); //控件绝对位置,长、宽
QCommandLinkButton *btnCustom = new QCommandLinkButton(
"&自定义安装",
"选择要安装的特定组件,适合高级用户。",
this
);
btnCustom->setGeometry(50, 200, 300, 60); //控件绝对位置,长、宽
// 连接信号
QObject::connect(btnBasic, &QCommandLinkButton::clicked, [&]() {
QMessageBox::information(this, "选择", "您选择了:基本安装");
// 通常会在这里执行操作,然后关闭当前窗口或打开新窗口
});
QObject::connect(btnCustom, &QCommandLinkButton::clicked, [&]() {
QMessageBox::information(this, "选择", "您选择了:自定义安装");
});
4.界面
5.典型应用场景:
安装向导:让用户选择安装类型(典型、自定义、最小化)。
设置对话框:在多个互斥的操作选项中进行选择(例如,选择网络配置模式)。
任何需要强调并清晰描述下一步操作的界面。
二.QToolButton (工具按钮)
1.简介
QToolButton 是一种通常出现在工具栏 (QToolBar) 上的特殊按钮,用于提供对常用命令的快速访问。它非常紧凑且高度可定制。
2.功能与特点
紧凑尺寸:通常只显示图标,以节省工具栏空间。
多种显示模式:可以设置为只显示图标、只显示文本、或图文并茂。
弹出菜单:可以关联一个弹出菜单(setMenu()),实现下拉式操作。
箭头样式:可以显示为一个箭头,用于指示方向或展开操作。
自动提升:在工具栏上通常有“自动提升”效果(无边框,鼠标悬停时显示),使其看起来更轻量。
3.代码示例
// 创建一个工具栏
QToolBar *toolbar = this->addToolBar("主工具栏");
// 1. 创建简单的工具按钮 (带有图标)
QToolButton *newButton = new QToolButton();
// newButton->setIcon(style()->standardIcon(QStyle::SP_FileIcon)); // 使用系统标准图标
newButton->setText("新建"); // 设置文本(通常在工具提示中显示)
newButton->setToolTip("新建文件 (Ctrl+N)"); // 设置工具提示
QObject::connect(newButton, &QToolButton::clicked, []() {
qDebug() << "新建操作被触发";
// 执行新建文件操作...
});
toolbar->addWidget(newButton);
// 2. 创建带有菜单的工具按钮
QToolButton *formatButton = new QToolButton();
formatButton->setText("格式");
formatButton->setPopupMode(QToolButton::MenuButtonPopup); // 点击按钮部分执行操作,点击箭头部分显示菜单
//formatButton->setIcon(style()->standardIcon(QStyle::SP_CommandLink));
// 创建关联的菜单
QMenu *formatMenu = new QMenu();
formatMenu->addAction("粗体");
formatMenu->addAction("斜体");
formatMenu->addAction("下划线");
formatButton->setMenu(formatMenu);
// 连接按钮本身的点击信号(不是菜单项的)
QObject::connect(formatButton, &QToolButton::clicked, [formatButton]() {
qDebug() << "格式按钮被点击,默认操作可能是上一次的格式选项";
// 这里可以执行一个默认操作,而不是显示菜单
// 因为 setPopupMode 是 MenuButtonPopup,所以点击按钮本身不会显示菜单
});
toolbar->addWidget(formatButton);
// 3. 创建一个只有箭头的工具按钮 (用于下拉列表)
QToolButton *arrowButton = new QToolButton();
arrowButton->setArrowType(Qt::DownArrow);
arrowButton->setPopupMode(QToolButton::InstantPopup); // 点击立即弹出菜单
QMenu *arrowMenu = new QMenu();
arrowMenu->addAction("选项 1");
arrowMenu->addAction("选项 2");
arrowButton->setMenu(arrowMenu);
toolbar->addWidget(arrowButton);
4.界面
5.典型应用场景:
应用程序的工具栏(如文件工具栏、格式工具栏)。
需要节省空间的紧凑布局。
需要将多个相关操作聚合在一个按钮下的情况(如下拉菜单按钮)。
绘图或设计软件中的工具选择板。
三.QDialogButtonBox (对话框按钮盒)
1.简介
QDialogButtonBox 是一个专门用于管理和布局对话框底部标准按钮的容器控件。它确保了按钮在不同平台上都能以符合该平台规范的方式显示(如 OK/Cancel 的顺序)。
2.功能与特点
标准化布局:自动按照平台标准(Windows, macOS, Linux)排列按钮顺序。
预定义标准按钮:内置了多种常用标准按钮(如 Ok, Cancel, Yes, No, Apply, Close 等),无需手动创建。
3.典型应用场景
任何模态或非模态对话框的底部按钮栏。
需要符合不同平台人机界面指南的应用程序。
快速创建标准操作的按钮组。
四.总结
需要引导用户做出描述性选择时,用 QCommandLinkButton。
需要为对话框创建标准底部按钮栏时,用 QDialogButtonBox。
需要在工具栏上放置一个紧凑的、可能带有菜单的命令按钮时,用 QToolButton。