osgWidget.NotifyWidget
是OpenSceneGraph
中的一个小部件(widget),它用于在场景中显示通知信息。它是在osgWidget
库中实现的,可以与其他小部件配合使用,以创建交互式用户界面。
class OSGWIDGETS_EXPORT osgWidget::NotifyWidget : public osgWidget::Label
osg::Referenced
osg::Object
osgWidget::Widget
osgWidget::Label
osgWidget::NotifyWidget
NotifyWidget(const std::string& filename, float width = 0, float height = 0, bool use_markup = false);
filename
:要显示的图片文件名。width
:图片的宽度。height
:图片的高度。use_markup
:是否使用标记语言。void setNotification(const std::string& message, bool autoHide = true)
设置通知信息。
message
:通知信息文本。autoHide
:是否自动隐藏通知窗口。float getDuration() const
获取通知窗口显示的时间(单位:秒)。
void setDuration(float duration)
设置通知窗口显示的时间(单位:秒)。
bool getAutoHide() const
获取通知窗口是否自动隐藏。
void setAutoHide(bool autoHide)
设置通知窗口是否自动隐藏。
virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
处理事件。
以下是一个使用osgWidget.NotifyWidget
显示通知信息的示例代码。
#include <osg/Notify>
#include <osg/Node>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osgWidget/WindowManager>
#include <osgWidget/Frame>
#include <osgWidget/NotifyWidget>
int main(int argc, char** argv)
{
osgViewer::Viewer viewer;
osgWidget::WindowManager* wm = new osgWidget::WindowManager(&viewer, 800, 600, osgWidget::WindowManager::WM_PICK);
wm->setWindowRectangle(0, 0, 800, 600);
osg::ref_ptr<osgWidget::Frame> root = new osgWidget::Frame;
root->setOrigin(0, 0);
root->setAnchor(osgWidget::Widget::BOTTOM_LEFT);
root->getBackground()->setColor(0, 0, 0, 0.5);
osg::ref_ptr<osgWidget::NotifyWidget> notify = new osgWidget::NotifyWidget("notify.png", 200, 100, false);
notify->setFont("fonts/arial.ttf");
notify->setFontSize(20.0f);
notify->setColor(1.0f, 1.0f, 1.0f, 1.0f);
notify->setNotification("Hello, OSG!", true);
root->addChild(notify.get());
wm->addChild(root.get());
viewer.setSceneData(wm);
return viewer.run();
}
在上面的示例中,我们首先创建了一个osgWidget::WindowManager
对象,然后创建了一个名为root
的osgWidget::Frame
小部件。我们将这个root
小部件设置为窗口的左下角,然后将osgWidget.NotifyWidget
添加到其中,并调用setNotification
方法设置通知信息。最后,我们将root
添加到osgWidget::WindowManager
中,将其设置为场景数据,并启动查看器。
下面是运行结果: