Qt_UI_Tip气泡

9 篇文章 0 订阅

QT想做个类似这种

鼠标移动到控件上可以有个信息tip的东西,或者说气泡。

到处找,发现是用ToolTips

1、使用setToolTip();

ui->button->setToolTip(dirPath);

可以完美复现。

2、或者直接在UI上操作

3、也可自定义类型的控件,给它做个气泡

ui中用PushButton2定义这个按钮

QString send_ret = "  "+dirPath+"  ";
ui->dirBtn->setLabelText(send_ret);

 如果不加空格

加空格美化一下

完成

附 PushButton2:

#ifndef PUSHBUTTON2_H
#define PUSHBUTTON2_H
#include <QPushButton>
#include <QLabel>
#include <QHBoxLayout>

class PushButton2 : public QPushButton
{
    Q_OBJECT
public:
    PushButton2(QWidget *parent = 0);
    ~PushButton2();
    void setLabelText(const QString &text);
protected:
    void enterEvent(QEvent*event);
    void leaveEvent(QEvent*event);
private:
    QLabel *label;
    QWidget *widget;
    QHBoxLayout *layout;
};

#endif // PushButton2_H
#include "pushbutton2.h"
#include <QDebug>
#include <QCursor>

PushButton2::PushButton2(QWidget *parent): //创建气泡,类型为标签
    QPushButton(parent)
{
    widget = new QWidget;
    label = new QLabel;
    widget->setWindowFlags(Qt::FramelessWindowHint);//用户不能通过窗口系统移动无边框窗口或调整其大小
    widget->setStyleSheet("background-color:#E4E4E4");//QStyle
    widget->setAutoFillBackground(false);
    widget->setAttribute(Qt::WA_TranslucentBackground);
    label->setText("File path:..."); //默认显示
    label->setMinimumSize(0,28);
    widget->setMinimumSize(0,28);
    layout = new QHBoxLayout;
    layout->addWidget(label);
    widget->setLayout(layout);
}

PushButton2::~PushButton2()
{
    delete label;
    delete layout;
    delete widget;
}

void PushButton2::setLabelText(const QString &text)
{
    label->setText(text);
}

//动态显示隐藏
void PushButton2::enterEvent(QEvent *event)
{
    widget->move(QCursor::pos());//返回光标在全局屏幕坐标中的位置
    widget->show();
}

void PushButton2::leaveEvent(QEvent *event)
{
    widget->hide();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值