Vc - Qt - QToolButton

QToolButton 是 Qt 框架中的一个类,是 QPushButton 的子类。它可以显示一个可单击的按钮,并且可以与弹出菜单、图标和文本等进行关联。

QToolButton的一些常见特性和用法包括:

  1. 设置文本:使用 setText() 函数设置按钮上的文本。
  2. 设置图标:使用 setIcon() 函数设置按钮上的图标。可以使用资源文件中的图标,也可以使用本地文件路径或URL。
  3. 设置弹出菜单:使用 setMenu() 函数设置按钮的弹出菜单。可以通过创建 QMenu 对象并将其添加到按钮上。
  4. 设置工具提示:使用 setToolTip() 函数设置按钮的工具提示,鼠标悬停在按钮上时显示的文本。
  5. 设置按钮样式:使用 setToolButtonStyle() 函数设置按钮的图标和文本的位置关系。例如,可以设置为 Qt::ToolButtonTextBesideIconQt::ToolButtonTextUnderIcon
  6. 连接信号和槽:使用信号 clicked() 来捕获按钮的点击事件,并将其与槽函数连接起来。
  7. 设置按钮是否可用:使用 setEnabled() 函数设置按钮是否可用,以便根据需要启用或禁用按钮。

除了上述特性外,还有其他一些函数可用于调整按钮的外观和行为,例如设置按钮的尺寸、设置按钮的样式表等。

QToolButton 提供了一种灵活的方法来创建可自定义的工具按钮,可以在工具栏、菜单栏、对话框等界面元素中使用。可以根据项目的需求自由地使用和定制。

下面是一个QToolButton的示例,展示了常用的一些功能:

cpp 复制代码
#include <QApplication>
#include <QToolButton>
#include <QMessageBox>
#include <QMenu>
#include <QWidget>
#include <QVBoxLayout>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    
    QWidget w;
    w.setFixedSize(600, 400);
    QVBoxLayout layout;
    w.setLayout(&layout);

    QToolButton toolButton;
    toolButton.setFixedSize(150, 30);
    layout.addWidget(&toolButton);
    toolButton.setText("ToolButton");
    toolButton.setToolTip("This is a tool button");

    // 设置图标和文本的位置关系
    toolButton.setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    toolButton.setPopupMode(QToolButton::MenuButtonPopup);

    // 设置图标
    QIcon icon("./icon.png");
    toolButton.setIcon(icon);

    // 设置弹出菜单
    QMenu* menu = new QMenu(&toolButton);
    menu->addAction("Action 1");
    menu->addAction("Action 2");
    menu->setFixedWidth(toolButton.width());
    toolButton.setMenu(menu);

    // 连接点击信号与槽函数
    QObject::connect(&toolButton, &QToolButton::clicked, [&]() {
        //QMessageBox::information(nullptr, "Clicked", "ToolButton clicked!");
        toolButton.showMenu();
        });

    // 显示 ToolButton
    w.show();

    return app.exec();
}

上述代码使用QWidget作为主窗口,布局为垂直布局,垂直布局中放入了一个QToolButton的对象。该QToolButton对象设置了如下内容:

  • 设置图标和文本的位置关系
  • 设置图标
  • 设置弹出菜单
  • 设置弹出菜单
    运行结果截图:

相关推荐
BHXDML8 分钟前
JVM 深度理解 —— 程序的底层运行逻辑
java·开发语言·jvm
Wang's Blog11 分钟前
Nodejs-HardCore: 深入解析DBF文件之二进制文件处理指南
开发语言·nodejs
hoiii18712 分钟前
基于LSB匹配的隐写术MATLAB实现程序
开发语言·matlab
J2虾虾19 分钟前
Java使用的可以使用的脚本执行引擎
java·开发语言·脚本执行
幻云201022 分钟前
Next.js指南:从入门到精通
开发语言·javascript·人工智能·python·架构
老马识途2.024 分钟前
java处理接口返回的json数据步骤 包括重试处理,异常抛出,日志打印,注意事项
java·开发语言
CCPC不拿奖不改名29 分钟前
网络与API:从HTTP协议视角理解网络分层原理+面试习题
开发语言·网络·python·网络协议·学习·http·面试
代码游侠39 分钟前
学习笔记——HC-SR04 超声波测距传感器
开发语言·笔记·嵌入式硬件·学习
superman超哥1 小时前
Context与任务上下文传递:Rust异步编程的信息高速公路
开发语言·rust·编程语言·context与任务上下文传递·rust异步编程
步达硬件1 小时前
【Matlab】批量自定义图像处理
开发语言·matlab