QML中如何使用tooltip
程序员文章站
2022-03-09 13:34:43
...
最近在学习QML的项目遇到了一个问题,发现在QML中所有组件都没有tooltip类似的属性,而这在QWidget中是可以轻而易举的做到的,但在QML中缺没有。于是在网上查了资料,在Qt5.7之后的版本才组件才可以使用tooltip属性,而我的环境是5.2.0,所以就没有办法使用tooltip了吗,当然有办法了,只是稍微麻烦一点而已。
因为C++和QML是可以互相调用的嘛,所以利用这一点就可以。自己写一个ToolTip类,注意在QML中调用的函数需要声明为Q_INVOKABLE。
//ToolTip.h
#ifndef TOOLTIP_H
#define TOOLTIP_H
#include <QObject>
class ToolTip : public QObject
{
Q_OBJECT
public:
explicit ToolTip(QObject *parent = nullptr);
Q_INVOKABLE void showToolTip(QString = "");
Q_INVOKABLE void hideToolTip();
};
#endif // TOOLTIP_H
//ToolTip.cpp
#include "tooltip.h"
#include <QToolTip>
ToolTip::ToolTip(QObject *parent) : QObject(parent)
{
}
void ToolTip::showToolTip(QString txt){
QToolTip::showText(QCursor::pos(), txt);
}
void ToolTip::hideToolTip()
{
QToolTip::hideText();
}
类写好了就可以调用了,在 QQmlApplicationEngine 中注册一下,起个在QML中调用的别名。
ToolTip toolTip;
engine.rootContext()->setContextProperty("toolTip",&toolTip);
在QML中使用tooltip吧,比如我对Text设置tooltip
Text {
id: close
text: qsTr("X")
width: 16
height: 16
anchors.right: parent.right
anchors.top: parent.top
anchors.topMargin: 10
anchors.rightMargin: 10
MouseArea{
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: Qt.quit()
onEntered: toolTip.showToolTip(qsTr("关闭"));
onExited: toolTip.hideToolTip();
}
}
上一篇: win10系统如何暂时关闭杀毒软件
推荐阅读
-
yii2中如何使用modal弹窗之基本使用,yii2使用modal弹窗
-
为什么无法使用php中mysqli的准备语句进行数据库中数据的查询(绑定参数或者绑定结果),项目急用!该如何处理
-
如何使用MySQL查询某个列中相同值的数量统计_MySQL
-
在vue中如何使用cropperjs的方法(详细教程)
-
JavaScript判断字符串中包含另一个字符串(QML 中使用)
-
详解在Spring中如何使用AspectJ来实现AOP
-
使用JDBC在MySQL数据库中如何快速批量插入数据
-
在C#中如何使用Dapper详解(译)
-
使用JDBC在MySQL数据库中如何快速批量插入数据
-
Winform开发框架中如何使用DevExpress的内置图标资源