Qt 实现透明可移动悬浮工具条
Qt之透明可移动悬浮工具条
1 摘要
浮动工具栏是一项极具人性化的功能,悬浮透明工具条通过保持界面最前端,确保用户随时可以看到提醒和记录的内容,不会被其他窗口遮挡,从而提高了信息的实时可见性。此外,用户无需频繁切换窗口,可以直接在悬浮界面上进行操作,如添加、查看、编辑等,大大提高了使用效率和便捷度。
2 悬浮工具条场景
悬浮透明工具条的主要作用包括提升用户体验、增强交互性和保持界面整洁:
•提升用户体验
悬浮透明工具条通过保持界面最前端,确保用户随时可以看到提醒和记录的内容,不会被其他窗口遮挡,从而提高了信息的实时可见性。此外,用户无需频繁切换窗口,可以直接在悬浮界面上进行操作,如添加、查看、编辑等,大大提高了使用效率和便捷度。
•增强交互性
悬浮透明工具条以透明的形式呈现,不会过度干扰用户正在进行的工作或界面显示,既能起到提醒作用,又能与其他任务和谐共存。这种设计使得工具条在不操作时不打扰用户,但在需要时又能快速找到并使用,增强了用户的交互体验。
•保持界面整洁
悬浮工具通常在大多数时候是不可见的,只有在用户需要时才会出现并吸引注意力。这种设计可以保持界面的干净整洁,避免界面过于杂乱。当用户将鼠标指针移动到某个对象上时,悬浮工具才会出现,移开后立即隐藏,确保了界面的整洁和用户的操作便捷性
3 功能实现
3.1 实现效果图
•背景透明:使用透明背景,以实现叠加到别到控制之上。
•拖拽移动:按下鼠标左键并拖动,松开鼠标后移动到制定位置。
•设置悬浮条位置:通过设置参数设置悬浮条位置。
•设置文本颜色:通过设置文本颜色改变按钮颜色。
•设置字符 图标:通过加载不同的字符图标库设置按钮图标。
鼠标拖拽功能
void mousePressEvent(QMouseEvent *event) override {
// 处理鼠标按下事件
if (event->button() == Qt::LeftButton) {
//&&!btns.at(0)->rect().contains(event->pos())
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void mouseMoveEvent(QMouseEvent *event) override {
// 处理鼠标移动事件
if (event->buttons() & Qt::LeftButton) {
move(event->globalPos() - dragPosition);
event->accept();
}
}
void mouseReleaseEvent(QMouseEvent *event) override {
// 处理鼠标释放事件
event->accept();
}
悬浮位置设置
if (vertical)
{
btn->setFixedHeight(50);
btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
}
else
{
btn->setFixedWidth(50);
btn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
}
文本颜色设置
字符文本设置
// 加载字体文件
int fontId = QFontDatabase::addApplicationFont(":/Fonts/iconfont.ttf");
QString fontFamily = QFontDatabase::