• Qt—QPushButton 使用总结


    设置位置和大小

    // 重新设定按钮的位置
    pBtnTest->move(100, 50);
    
    // 重新设定按钮的大小
    pBtnTest->resize(80, 50);
    
    // 设置按钮的位置和大小
    pBtnTest->setGeometry(100, 50, 80, 50);
    

    设置显示文本信息的字体

    pBtnTest->setFont(QFont("宋体", 18));
    

    根据文本长度自动调整大小

    pBtnTest->setText("我是一个很长很长很长的文本");
        
    // adjustSize():自动调整控件的大小,以适应其内容;
    pBtnTest->adjustSize();
    

    设置按钮获取焦点

    // 设置控件获取焦点
    pBtnTest->setFocus();
    
    // 获取控件是否具有焦点;如果控件有焦点,返回 true;
    bool b = pBtnTest->hasFocus();
    qDebug() << b;
    
    // 清除控件的焦点
    pBtnTest->clearFocus();
    

    设置鼠标位于按钮区域时,光标的类型

    pBtnTest->setCursor(QCursor(Qt::BusyCursor));
    

    设置按钮的 禁用 和 启用

    // 禁用控件
    pBtnTest->setDisabled(true);
    
    // 启用控件
    pBtnTest->setEnabled(true);
    

    设置按钮背景透明:即将按钮外观设为平铺

    pBtnTest->setFlat(true);
    

    设置在控件上按下 回车键 时,响应控件的 click 事件

    pBtnTest->setDefault(true);
    

    设置按钮上显示的图标

    // 设置按钮上显示的图标
    pBtnTest->setIcon(QIcon(":/Image/Luffy.png"));
    
    // 设置图标的大小
    pBtnTest->setIconSize(QSize(24, 24));
    

    设置可选按钮

    auto earMonitorSwitch = new QPushButton(this);
    earMonitorSwitch->setCheckable(true);
    earMonitorSwitch->setStyleSheet("QPushButton{border-image:url(./resource/audio/audio_setting/btn_earmonitor_close.png);}"
    "QPushButton:checked{border-image:url(./resource/audio/audio_setting/btn_earmonitor_open.png);}");
    

    设置不同状态下的通用CSS

    pBtnTest->setStyleSheet("QPushButton{border-image:url(./resource/audio/audio_setting/close_normal.png);border:none;}"
    		"QPushButton:hover{border-image:url(./resource/audio/audio_setting/close_hover.png);}"
    		"QPushButton:pressed{border-image:url(./resource/audio/audio_setting/close_press.png);}");
    

    设置按钮样式:前景色,背景色,边框等

    // 定义初始样式集合
    QStringList list;
    list.append("color:white");                         // 前景色
    list.append("background-color:rgb(85,170,255)");    // 背景色
    list.append("border-style:outset");                 // 边框风格
    list.append("border-5px");                    // 边框宽度
    list.append("border-color:rgb(10,45,110)");         // 边框颜色
    list.append("border-radius:20px");                  // 边框倒角
    list.append("font:bold 30px");                      // 字体
    list.append("padding:4px");                         // 内边距
    
    // 设置按钮初始样式
    pBtnTest->setStyleSheet(list.join(';'));                      
     
    // 按钮按下时修改样式
    list.replace(6, "font:bold 35px");
    connect(pBtnTest, &QPushButton::pressed, [=](){
           pBtnTest->setStyleSheet(list.join(';'));
    });
    
    // 按钮弹起时恢复样式
    list.replace(6, "font:bold 30px");
    connect(pBtnTest, &QPushButton::released, [=](){
           pBtnTest->setStyleSheet(list.join(';'));
    });
    

    为按钮添加右键菜单

    auto button = new QPushButton(u8"按钮");
    button->setContextMenuPolicy(Qt::ActionsContextMenu);
    if (type == AccomSoundType::mySound)
    {
    	auto deleteAction = new QAction(left);
    	deleteAction->setText(u8"删除");
    	connect(deleteAction, &QAction::triggered, this, [=]() {
    		trace("删除");
    	});
    	button->addAction(deleteAction);
    }
    

    为按钮添加左键菜单

    // 菜单
    QMenu *pMenu = new QMenu(this);
    pMenu->addAction(QString::fromLocal8Bit("设置"));
    pMenu->addAction(QString::fromLocal8Bit("版本检测"));
    pMenu->addSeparator();
    pMenu->addAction(QString::fromLocal8Bit("关于我们"));
    pMenu->addAction(QString::fromLocal8Bit("退出"));
    
    // 按钮
    QPushButton *pButton = new QPushButton(this);
    pButton->setText(QString::fromLocal8Bit("主菜单"));
    
    // 设置菜单
    pButton->setMenu(pMenu);
    

    上面的方法会让按钮显示一个下拉的三角形图标,如果想取消这个图片可以用 qss 去除:

    QPushButton::menu-indicator#btn_room_setting{
    	image:none;
    }
    

    参考:

    Qt学习笔记(十五):QPushButton 按钮的常用方法

    QT QPushButton


  • 相关阅读:
    jjwt 简单使用Java
    vue鼠标悬浮图片处理
    第54天 [js] 写一个函数找出给定数组中的最大差值
    第71天 [js] 写一个方法,实现深浅拷贝
    第65天 [css]写一个小心心
    记一次ftp服务器搭建
    如何向iOS终端发送自定义推送
    对内网穿透ssh关闭密码认证
    C++特化调用模版类的模板方法
    Docker网络配置的几种常见模式
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/13354355.html
Copyright © 2020-2023  润新知