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();
}