光标显示的主要逻辑在FrameSelect.cpp文件中。FrameSelection::caretBlinkTimerFired函数即为光标的定时器,来控制光标闪烁。该定时器会调用invalidateCaretRect()来触发重绘请求。同时还会对m_caretPaint的值取反。m_caretPaint变量控制重绘过程中CaretBase::paintCaret 函数是否被调用。CaretBase::paintCaret 函数即为光标的实际绘制函数。这就造成了光标的闪烁效果。
光标显示的主要逻辑在FrameSelect.cpp文件中。FrameSelection::caretBlinkTimerFired函数即为光标的定时器,来控制光标闪烁。该定时器会调用invalidateCaretRect()来触发重绘请求。同时还会对m_caretPaint的值取反。m_caretPaint变量控制重绘过程中CaretBase::paintCaret 函数是否被调用。CaretBase::paintCaret 函数即为光标的实际绘制函数。这就造成了光标的闪烁效果。