• QtC++与QToolButton详解


    介绍

    QToolButton 是 Qt 中的一个控件类,用于创建工具按钮,它有以下主要作用和特点:

    1. 工具按钮: QToolButton 用于创建工具按钮,允许用户执行各种操作,如启动功能、弹出菜单、打开文件等。工具按钮通常用于用户界面中提供快速访问常用功能的途径。

    2. 多种工具按钮样式: QToolButton 提供多种按钮样式,包括纯文本按钮、带图标按钮、同时带有文本和图标的按钮等,以满足不同应用程序的需求。

    3. 图标支持: QToolButton 可以显示图标,允许您创建带有可视图标的按钮。这对于使用户界面更加直观和吸引人非常有用。

    4. 文本支持: QToolButton 可以显示文本标签,使按钮的目的更明确。您可以选择在图标旁边或在图标上显示文本。

    5. 弹出菜单: QToolButton 具有内置支持弹出菜单的功能,这使得您可以在单个按钮上组合多个操作,用户可以通过单击按钮执行默认操作,或通过下拉菜单选择其他操作。

    6. 按钮组: QToolButton 可以分组,以确保只能选择一个工具按钮,这在需要单选按钮集合的情况下非常有用。

    7. 自定义样式: 您可以自定义 QToolButton 的样式,包括按钮的外观、颜色、字体等,以适应应用程序的整体设计。

    8. 工具提示: QToolButton 支持工具提示文本,可用于提供按钮的描述或说明,当用户将鼠标悬停在按钮上时显示。

    9. 信号与槽: QToolButton 可以发出信号,以便在用户与按钮交互时执行特定操作。您可以使用信号与槽机制连接按钮的信号。

    10. 多线程支持: QToolButton 可以在多线程环境中使用,以便在多线程应用程序中创建交互性用户界面。

    11. 快捷键支持: QToolButton 支持快捷键,允许用户通过键盘操作来执行按钮的操作。

    12. 跨平台: Qt 是一个跨平台的框架,因此 QToolButton 可以在不同操作系统上提供一致的外观和行为。

    总之,QToolButton 是 Qt 中用于创建工具按钮的重要控件,可用于创建各种工具按钮,以提供用户快速访问功能和操作的途径。它适用于各种应用程序,从简单的工具栏按钮到复杂的弹出菜单和操作按钮,使用户能够方便地执行操作。

    示例

    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例1: 创建基本的 QToolButton
        QToolButton basicButton;
        basicButton.setText("示例1: 基本的 QToolButton");
        basicButton.show();
    
        // 示例2: 添加图标
        QToolButton iconButton;
        iconButton.setIcon(QIcon("icon.png"));
        iconButton.setText("示例2: 添加图标");
        iconButton.show();
    
        // 示例3: 自定义文本位置
        QToolButton customTextPosition;
        customTextPosition.setText("示例3: 自定义文本位置");
        customTextPosition.setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
        customTextPosition.show();
    
        // 示例4: 弹出菜单按钮
        QToolButton popupButton;
        popupButton.setText("示例4: 弹出菜单按钮");
        QMenu popupMenu;
        popupMenu.addAction("菜单选项1");
        popupMenu.addAction("菜单选项2");
        popupButton.setMenu(&popupMenu);
        popupButton.show();
    
        // 示例5: 切换按钮
        QToolButton toggleButton;
        toggleButton.setText("示例5: 切换按钮");
        toggleButton.setCheckable(true);
        toggleButton.show();
    
        // 示例6: 设置工具提示
        QToolButton tooltipButton;
        tooltipButton.setText("示例6: 设置工具提示");
        tooltipButton.setToolTip("这是一个工具按钮");
        tooltipButton.show();
    
        // 示例7: 隐藏按钮
        QToolButton hideButton;
        hideButton.setText("示例7: 隐藏按钮");
        hideButton.hide();
        hideButton.show(); // 可以使用 show() 来显示按钮
        hideButton.show();
    
        // 示例8: 禁用按钮
        QToolButton disabledButton;
        disabledButton.setText("示例8: 禁用按钮");
        disabledButton.setDisabled(true);
        disabledButton.show();
    
        // 示例9: 设置按钮大小
        QToolButton customSizeButton;
        customSizeButton.setText("示例9: 设置按钮大小");
        customSizeButton.setIconSize(QSize(32, 32));
        customSizeButton.show();
    
        // 示例10: 连接信号与槽函数
        QToolButton signalSlotButton;
        signalSlotButton.setText("示例10: 连接信号与槽函数");
        QObject::connect(&signalSlotButton, &QToolButton::clicked, []() {
            qDebug() << "按钮被点击了";
        });
        signalSlotButton.show();
    
        return a.exec();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例11: 设置工具按钮风格
        QToolButton styleButton;
        styleButton.setText("示例11: 设置工具按钮风格");
        styleButton.setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        styleButton.show();
    
        // 示例12: 带图标和文本的工具按钮
        QToolButton iconTextButton;
        iconTextButton.setText("示例12: 带图标和文本的工具按钮");
        iconTextButton.setIcon(QIcon("icon.png"));
        iconTextButton.setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
        iconTextButton.show();
    
        // 示例13: 使用 QAction 创建工具按钮
        QToolButton actionButton;
        actionButton.setText("示例13: 使用QAction创建工具按钮");
        QAction action("动作1", &actionButton);
        actionButton.setDefaultAction(&action);
        actionButton.show();
    
        // 示例14: 工具按钮组
        QToolButton toolButton1;
        toolButton1.setText("示例14: 工具按钮组 (按钮1)");
        QToolButton toolButton2;
        toolButton2.setText("示例14: 工具按钮组 (按钮2)");
        QToolButton toolButton3;
        toolButton3.setText("示例14: 工具按钮组 (按钮3)");
        QToolButton toolButton4;
        toolButton4.setText("示例14: 工具按钮组 (按钮4)");
        
        QButtonGroup toolButtonGroup;
        toolButtonGroup.addButton(&toolButton1);
        toolButtonGroup.addButton(&toolButton2);
        toolButtonGroup.addButton(&toolButton3);
        toolButtonGroup.addButton(&toolButton4);
    
        toolButton1.setCheckable(true);
        toolButton2.setCheckable(true);
        toolButton3.setCheckable(true);
        toolButton4.setCheckable(true);
    
        toolButton1.show();
        toolButton2.show();
        toolButton3.show();
        toolButton4.show();
    
        // 示例15: 自定义图标样式
        QToolButton customIconStyle;
        customIconStyle.setText("示例15: 自定义图标样式");
        customIconStyle.setIcon(QIcon("custom.png"));
        customIconStyle.setIconSize(QSize(64, 64));
        customIconStyle.show();
    
        // 示例16: 带有弹出窗口的工具按钮
        QToolButton popupWindowButton;
        popupWindowButton.setText("示例16: 带有弹出窗口的工具按钮");
        QMenu popupMenu;
        popupMenu.addAction("选项1");
        popupMenu.addAction("选项2");
        popupWindowButton.setMenu(&popupMenu);
        popupWindowButton.show();
    
        // 示例17: 动态切换工具按钮状态
        QToolButton dynamicToggle;
        dynamicToggle.setText("示例17: 动态切换工具按钮状态");
        dynamicToggle.setCheckable(true);
        dynamicToggle.toggle(); // 切换按钮状态
        dynamicToggle.show();
    
        // 示例18: 工具按钮的信号与槽
        QToolButton signalSlotButton;
        signalSlotButton.setText("示例18: 工具按钮的信号与槽");
        QObject::connect(&signalSlotButton, &QToolButton::clicked, []() {
            qDebug() << "按钮被点击了";
        });
        signalSlotButton.show();
    
        return a.exec();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例19: 使用工具栏和工具按钮
        QWidget widget;
        QToolBar toolBar(&widget);
        toolBar.setWindowTitle("示例19: 使用工具栏和工具按钮");
        widget.setWindowTitle("示例19: 使用工具栏和工具按钮");
        toolBar.setIconSize(QSize(32, 32));
    
        QToolButton toolButton1;
        toolButton1.setIcon(QIcon("icon1.png"));
        toolButton1.setText("按钮1");
        QToolButton toolButton2;
        toolButton2.setIcon(QIcon("icon2.png"));
        toolButton2.setText("按钮2");
        QToolButton toolButton3;
        toolButton3.setIcon(QIcon("icon3.png"));
        toolButton3.setText("按钮3");
    
        toolBar.addWidget(&toolButton1);
        toolBar.addWidget(&toolButton2);
        toolBar.addWidget(&toolButton3);
        widget.show();
    
        // 示例20: 自定义图标和样式
        QToolButton customIconStyle;
        customIconStyle.setText("示例20: 自定义图标和样式");
        customIconStyle.setIcon(QIcon("custom.png"));
        customIconStyle.setIconSize(QSize(64, 64));
        customIconStyle.setStyleSheet("background-color: lightblue; border: 2px solid blue;");
        customIconStyle.show();
    
        return a.exec();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    十分钟学完简单工厂,普通工厂,抽象工厂
    嵌入式分享合集95
    日志审计设计-结合spring-aop实现
    ARFoundation系列讲解 - 92 涂鸦效果
    【零基础入门MyBatis系列】第十一篇——动态SQL
    useEffect的两个参数
    TNZ5TSC OSN1800V全新板卡100G支路业务处理板
    app,小程序打包
    单元测试(JUint)
    [附源码]计算机毕业设计JAVA影院售票系统
  • 原文地址:https://blog.csdn.net/LuXiaoXin1999/article/details/134226924