查看完整版本: [-- 大佬们,鼠标经过控件,如何自动在状态栏显示提示字符? --]

QTCN开发网 -> Qt基础编程 -> 大佬们,鼠标经过控件,如何自动在状态栏显示提示字符? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lanmanck 2020-05-27 09:24

大佬们,鼠标经过控件,如何自动在状态栏显示提示字符?

比如界面有2个控件,pushbutton,radiobutton,下面有个状态栏,我鼠标移到这2个控件上,下面状态栏就自动出现提示字符,例如“这个pushbutton是关机的”,“这个radiobutton选择”性别。
用代码判断鼠标位于哪个控件内部倒是可以解决,但是有没有他内部就支持的方法?类似于mdi菜单那种自动帮助提示?
多谢。

青空飞羽 2020-05-27 10:06
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 &)

fearlazy 2020-05-27 10:07
目测没有

lanmanck 2020-05-27 10:41
青空飞羽: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并可用呢?

lanmanck 2020-05-27 10:52
lanmanck:牛逼啊,setStatusTip()在mainwindow好使,那么如何在别的dialog也有个statusbar并可用呢?
 (2020-05-27 10:41) 

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

能不能弹一个dialog出来,然后dialog里面控件的提示还是用背后的mainwindow的statusbar来做呢?

青空飞羽 2020-05-27 11:08
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);

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

你太屌了,大力支持!

lanmanck 2020-05-28 15:50
青空飞羽: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省事了。

青空飞羽 2020-05-29 13:30
lanmanck:不是哦,兄台,我说的这个statusbar仍然是背后那个mainwindow的statusbar,如果dialog有statusbar那就不如再新建一个mainwindow省事了。 (2020-05-28 15:50) 

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

lanmanck 2020-06-01 08:57
青空飞羽:那就把mainwindow的statusbar传进dialog中,把事件过滤器中的m_statusBar换成mainwindow的statusbar (2020-05-29 13:30) 

仿照你的做法,成功了,感谢!


查看完整版本: [-- 大佬们,鼠标经过控件,如何自动在状态栏显示提示字符? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled