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对象设置了如下内容:

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

相关推荐
身如柳絮随风扬1 小时前
Java中的CAS机制详解
java·开发语言
韩立学长2 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
froginwe113 小时前
Scala 循环
开发语言
m0_706653233 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你913 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Bruk.Liu3 小时前
(LangChain实战2):LangChain消息(message)的使用
开发语言·langchain
qq_423233903 小时前
C++与Python混合编程实战
开发语言·c++·算法
m0_715575343 小时前
分布式任务调度系统
开发语言·c++·算法
csbysj20204 小时前
选择(Selectable)
开发语言
naruto_lnq4 小时前
泛型编程与STL设计思想
开发语言·c++·算法