MenuToolButton自绘控件,带下拉框的QToolButton
效果
下拉样式可自定义
跟随QToolButton的Qt::ToolButtonStyle属性改变图标文字样式
使用示例
正常UI文件创建QToolButton然后提升,或者直接代码创建都可以。
// 创建一个 QList 对象来存储 QPixmap 类型的图像列表QList<QPixmap> pixmaps;// 创建一个 QStringList 对象来存储文本列表QStringList texts;// 将图像添加到 QPixmap 对象列表中,这里添加了两张图片pixmaps << QPixmap("://images/gif.png")<< QPixmap("://images/csv.png")<< QPixmap("://images/pdf.png");// 将文本添加到QStringList对象列表中,这里添加了两个文本项texts << "Import GIF"<< "Import CSV"<< "Import PDF";// 获取用户界面中名为toolButton的指针,并设置其图标大小为42x42像素ui->toolButton->setIconSize(QSize(42, 42));// 获取用户界面中名为toolButton的指针,并设置其文字在图标的下方ui->toolButton->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonTextUnderIcon);// 设置名为toolButton的按钮的图标列表,使用之前创建的 pixmaps 和 texts 列表ui->toolButton->setList(pixmaps, texts);// 设置名为toolButton的按钮的当前选中项索引为0,表示默认选中列表中的第一个项ui->toolButton->setCurrentItemIndex(0);// 设置名为toolButton的按钮的点击切换行为为true,即点击时点击时切换主按钮状态ui->toolButton->setClickToSwitch(true);// 设置名为toolButton的按钮的点击切换发射信号false,即点击时点击时发射点击信号ui->toolButton->setClickToSwitchWithEmit(true);// 设置名为toolButton的按钮的弹出区域可见性为true,即在显示弹出区域ui->toolButton->setPopAreaVisible(true);// 设置名为toolButton的按钮的弹出区域图片为://images/arrow.png,用于指示弹出区域ui->toolButton->setPopAreaPixmap(QPixmap("://images/arrow.png"));// 设置名为toolButton的按钮的弹出区域样式为MenuToolButton::PopAreaStyle::kToolButtonCornerRight,表示弹出区域位于按钮的右下角ui->toolButton->setPopAreaStyle(MenuToolButton::PopAreaStyle::kToolButtonCornerRight);// 建立信号槽连接,当菜单工具按钮被点击时,发射clicked信号,由当前类接收connect(ui->toolButton, &MenuToolButton::menuToolButton_clicked, this, [=](int i){// 当按钮被点击时,打印出传递的索引值iqDebug() << i << texts.at(i);});
源码
CSDN 资源 https://download.csdn.net/download/weixin_43807244/89552106
Github 链接
https://github.com/sorrowfeng/MenuToolButton