libraries
- jwwlib
- libdxfrw: a free library of C ++, DXF file format for reading and writing text or binary format (C ++ library to read and write DXF / DWG files)
- muparser: a cross-platform library analytical formula, which can be custom multi-parametric function, custom constants, variables, and unary prefix, postfix operators, binary operators, etc., it is compiled into bytecode formula, so the calculation is very fast
LibreCAD
- src: source
- action: Action
- cmd: command line
- lib: various libraries
- actions: processing a variety of response to events
- creation
- debug
- engine
- fileio
- filter
- generators
- gui: interface display
- information
- math
- modification
- printing
- scripting
- main: Start programs and windows
- plugins: plugins
- test
- ui: Interface Control
qc_applicationwindow
1 /** 2 * Redraws all mdi windows. 3 */ 4 void QC_ApplicationWindow::redrawAll() 5 { 6 if (mdiAreaCAD) 7 { 8 foreach (const QC_MDIWindow* win, window_list) 9 { 10 if (win) 11 { 12 QG_GraphicView* gv = win->getGraphicView(); 13 if (gv) {gv->redraw();} 14 } 15 } 16 } 17 }
\librecad\src\ui
qg_graphicView
updateGridStatusWidget()
1 /** 2 * Sets the text for the grid status widget in the left bottom corner. 3 */ 4 void QG_GraphicView::updateGridStatusWidget(const QString& text) 5 { 6 emit gridStatusChanged(text); 7 }
wheelEvent()
1 /** 2 * mouse wheel event. zooms in/out or scrolls when 3 * shift or ctrl is pressed. 4 */ 5 void QG_GraphicView::wheelEvent(QWheelEvent *e) {...}
\librecad\src\lib\gui
rs_graphicview
centerOffsetX()
1 /** 2 * Centers the drawing in x-direction. 3 */ 4 void RS_GraphicView::centerOffsetX() { 5 if (container && !zoomFrozen) { 6 offsetX = (int)(((getWidth()-borderLeft-borderRight) 7 - (container->getSize().x*factor.x))/2.0 8 - (container->getMin().x*factor.x)) + borderLeft; 9 } 10 }
zoomScroll()
1 /** 2 * Scrolls in the given direction. 3 */ 4 void RS_GraphicView::zoomScroll(RS2::Direction direction) { 5 switch (direction) { 6 case RS2::Up: 7 offsetY-=50; 8 break; 9 case RS2::Down: 10 offsetY+=50; 11 break; 12 case RS2::Right: 13 offsetX+=50; 14 break; 15 case RS2::Left: 16 offsetX-=50; 17 break; 18 } 19 adjustOffsetControls(); 20 adjustZoomControls(); 21 // updateGrid(); 22 23 redraw(); 24 }
<QCursor>
The QCursor class provides a mouse cursor with an arbitrary shape
<QDockWidget>
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-level window on the desktop
参考:
https://blog.csdn.net/Caoyang_He/article/details/80343945