• 1939阅读
  • 9回复

[提问]大佬们,鼠标经过控件,如何自动在状态栏显示提示字符? [复制链接]

上一主题 下一主题
离线lanmanck
 

只看楼主 倒序阅读 楼主  发表于: 2020-05-27
— 本帖被 20091001753 执行加亮操作(2020-05-28) —
比如界面有2个控件,pushbutton,radiobutton,下面有个状态栏,我鼠标移到这2个控件上,下面状态栏就自动出现提示字符,例如“这个pushbutton是关机的”,“这个radiobutton选择”性别。
用代码判断鼠标位于哪个控件内部倒是可以解决,但是有没有他内部就支持的方法?类似于mdi菜单那种自动帮助提示?
多谢。
精彩博客:labisart.com
离线青空飞羽

只看该作者 1楼 发表于: 2020-05-27
statusTip : QString
This property holds the widget's status tip
By default, this property contains an empty string.
Access functions:

QString
statusTip() const
void
setStatusTip(const QString &)
4条评分好评度+1贡献值+1金钱+10威望+1
20091001753 好评度 +1 - 2020-05-27
20091001753 贡献值 +1 - 2020-05-27
20091001753 威望 +1 - 2020-05-27
20091001753 金钱 +10 - 2020-05-27
离线fearlazy

只看该作者 2楼 发表于: 2020-05-27
目测没有
个人博客: www.fearlazy.com 

学习使我快乐!
离线lanmanck

只看该作者 3楼 发表于: 2020-05-27
回 青空飞羽 的帖子
青空飞羽:statusTip : QString
This property holds the widget's status tip
By default, this property contains an empty string.
Access functions:
....... (2020-05-27 10:06)


牛逼啊,setStatusTip()在mainwindow好使,那么如何在别的dialog也有个statusbar并可用呢?
精彩博客:labisart.com
离线lanmanck

只看该作者 4楼 发表于: 2020-05-27
回 lanmanck 的帖子
lanmanck:牛逼啊,setStatusTip()在mainwindow好使,那么如何在别的dialog也有个statusbar并可用呢?
 (2020-05-27 10:41) 

发现多加一个mainwindow可以。。。。

能不能弹一个dialog出来,然后dialog里面控件的提示还是用背后的mainwindow的statusbar来做呢?
精彩博客:labisart.com
离线青空飞羽

只看该作者 5楼 发表于: 2020-05-27
回 lanmanck 的帖子
lanmanck:牛逼啊,setStatusTip()在mainwindow好使,那么如何在别的dialog也有个statusbar并可用呢?
 (2020-05-27 10:41) 

dialog里只能自己实现了
1. 先new 一个QStatusBar *m_statusBar放入对话框的布局内
2. 然后需要重写Dialog界面类的事件过滤函数eventFilter。
bool Dialog::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::HoverEnter) {
    QWidget *pWidget = qobject_cast<QWidget *>(obj);
    if (pWidget)
    {
        m_statusBar->showMessage(pWidget->statusTip());
    }
    }
    else if (event->type() == QEvent::HoverLeave) {
        m_statusBar->showMessage("");
    }

    return QDialog::eventFilter(obj, event);
}

3. 对控件安装事件过滤器
    ui->pushButton_1->installEventFilter(this);
    ui->pushButton_2->installEventFilter(this);
4条评分好评度+1贡献值+1金钱+10威望+1
20091001753 好评度 +1 - 2020-05-27
20091001753 贡献值 +1 - 2020-05-27
20091001753 威望 +1 - 2020-05-27
20091001753 金钱 +10 - 2020-05-27
离线lanmanck

只看该作者 6楼 发表于: 2020-05-27
回 青空飞羽 的帖子
青空飞羽:dialog里只能自己实现了
1. 先new 一个QStatusBar *m_statusBar放入对话框的布局内
2. 然后需要重写Dialog界面类的事件过滤函数eventFilter。
bool Dialog::eventFilter(QObject *obj, QEvent *event)
....... (2020-05-27 11:08) 

你太屌了,大力支持!
精彩博客:labisart.com
离线lanmanck

只看该作者 7楼 发表于: 2020-05-28
回 青空飞羽 的帖子
青空飞羽:dialog里只能自己实现了
1. 先new 一个QStatusBar *m_statusBar放入对话框的布局内
2. 然后需要重写Dialog界面类的事件过滤函数eventFilter。
bool Dialog::eventFilter(QObject *obj, QEvent *event)
....... (2020-05-27 11:08) 

不是哦,兄台,我说的这个statusbar仍然是背后那个mainwindow的statusbar,如果dialog有statusbar那就不如再新建一个mainwindow省事了。
精彩博客:labisart.com
离线青空飞羽

只看该作者 8楼 发表于: 2020-05-29
回 lanmanck 的帖子
lanmanck:不是哦,兄台,我说的这个statusbar仍然是背后那个mainwindow的statusbar,如果dialog有statusbar那就不如再新建一个mainwindow省事了。 (2020-05-28 15:50) 

那就把mainwindow的statusbar传进dialog中,把事件过滤器中的m_statusBar换成mainwindow的statusbar
离线lanmanck

只看该作者 9楼 发表于: 2020-06-01
回 青空飞羽 的帖子
青空飞羽:那就把mainwindow的statusbar传进dialog中,把事件过滤器中的m_statusBar换成mainwindow的statusbar (2020-05-29 13:30) 

仿照你的做法,成功了,感谢!
精彩博客:labisart.com
快速回复
限100 字节
 
上一个 下一个