📄 qt_spec.cpp
字号:
OutputClass = o; BaseObj = g; setMinimumSize(100, 80); setBackgroundMode(NoBackground); HScroll = new QScrollBar(QScrollBar::Horizontal, this, 0); HScroll->setRange(0, 1000); HScroll->setSteps(1, 16); connect(HScroll, SIGNAL(valueChanged(int)), SLOT(hScrollEvent(int))); VScroll = new QScrollBar(QScrollBar::Vertical, this, 0); VScroll->setRange(0, 1000); VScroll->setSteps(1, 16); connect(VScroll, SIGNAL(valueChanged(int)), SLOT(vScrollEvent(int))); if(!MainWidget) QAppl->setMainWidget(MainWidget = this); setMouseTracking(true); setFocusPolicy(StrongFocus);}RLPwidget::~RLPwidget(){ if(OutputClass)((OutputQT*)OutputClass)->widget = 0L;
OutputClass = 0L;
if(BaseObj){
BaseObj->Command(CMD_CAN_DELETE, 0L, 0L);
BaseObj = 0L;
}}//public slots: menu items, eventsvoidRLPwidget::hScrollEvent(int pos){ if(BaseObj){ BaseObj->Command(CMD_SETHPOS, (void*)(&pos), OutputClass); repaint(); }}voidRLPwidget::vScrollEvent(int pos){ if(BaseObj){ BaseObj->Command(CMD_SETVPOS, (void*)(&pos), OutputClass); repaint(); }}voidRLPwidget::cmOpen(){ if(BaseObj)BaseObj->Command(CMD_OPEN, (void *)NULL, OutputClass);}voidRLPwidget::cmSaveDataAs(){ if(BaseObj)BaseObj->Command(CMD_SAVEDATAAS, (void *)NULL, OutputClass);}voidRLPwidget::cmExit(){ if(BaseObj) {
if(BaseObj->Command(CMD_CAN_CLOSE, 0L, 0L)){
BaseObj = 0L;
delete this;
}
}
else delete(this);}voidRLPwidget::cmNewGraph(){ if(BaseObj)BaseObj->Command(CMD_NEWGRAPH, (void *)NULL, OutputClass);}voidRLPwidget::cmNewPage(){ if(BaseObj)BaseObj->Command(CMD_NEWPAGE, (void *)NULL, OutputClass);}voidRLPwidget::cmDelGraph(){ if(BaseObj)BaseObj->Command(CMD_DELGRAPH, (void *)NULL, OutputClass);}voidRLPwidget::cmAddPlot(){ if(BaseObj)BaseObj->Command(CMD_ADDPLOT, (void *)NULL, OutputClass);}voidRLPwidget::cmAddLegend(){ if(BaseObj)BaseObj->Command(CMD_LEGEND, (void *)NULL, OutputClass);}
void
RLPwidget::cmLayers()
{
if(BaseObj)BaseObj->Command(CMD_LAYERS, (void *)NULL, OutputClass);
}voidRLPwidget::cmAbout(){ RLPlotInfo();}voidRLPwidget::cmAddRowCol(){ if(BaseObj)BaseObj->Command(CMD_ADDROWCOL, (void *)NULL, OutputClass);}voidRLPwidget::cmCopy(){ if(BaseObj && BaseObj->Id == GO_SPREADDATA) { if(BaseObj->Command(CMD_QUERY_COPY, 0L, OutputClass)) CopyData(BaseObj); }}voidRLPwidget::cmCut(){ if(BaseObj && BaseObj->Id == GO_SPREADDATA) { BaseObj->Command(CMD_CUT, 0L, OutputClass); CopyData(BaseObj); }}voidRLPwidget::cmPaste(){ if(BaseObj) { OutputClass->MouseCursor(MC_WAIT, true); TestClipboard(BaseObj); OutputClass->MouseCursor(MC_ARROW, true); }}voidRLPwidget::cmCopyGraph(){ if(BaseObj) CopyGraph(BaseObj);}voidRLPwidget::cmSaveGraphAs(){ SaveGraphAs(BaseObj);}voidRLPwidget::cmRedraw(){ if(OutputClass && BaseObj && OutputClass->Erase(defs.Color(COL_BG))) { BaseObj->Command(CMD_SETSCROLL, 0L, OutputClass); repaint(); }}voidRLPwidget::cmZoom25(){ BaseObj->Command(CMD_ZOOM, (void*)(&"25"), OutputClass);}voidRLPwidget::cmZoom50(){ BaseObj->Command(CMD_ZOOM, (void*)(&"50"), OutputClass);}voidRLPwidget::cmZoom100(){ BaseObj->Command(CMD_ZOOM, (void*)(&"100"), OutputClass);}voidRLPwidget::cmZoom200(){ BaseObj->Command(CMD_ZOOM, (void*)(&"200"), OutputClass);}voidRLPwidget::cmZoom400(){ BaseObj->Command(CMD_ZOOM, (void*)(&"400"), OutputClass);}voidRLPwidget::cmZoomIn(){ BaseObj->Command(CMD_ZOOM, (void*)(&"+"), OutputClass);}voidRLPwidget::cmZoomOut(){ BaseObj->Command(CMD_ZOOM, (void*)(&"-"), OutputClass);}voidRLPwidget::cmZoomFit(){ BaseObj->Command(CMD_ZOOM, (void*)(&"fit"), OutputClass);}voidRLPwidget::cmPrint(){ int m; PrintQT out(0L, 0L); if(!BaseObj) return; if(BaseObj->Id == GO_SPREADDATA) { m = iround(out.hres/60.0);#ifdef Q_CHECK_PTR //Qt version 3, n.a. in version 2 out.printer->setMargins(m, m, m, m);#endif BaseObj->Command(CMD_PRINT, 0L, &out); } else if(out.StartPage()){ BaseObj->DoPlot(&out); out.EndPage(); } BaseObj->DoPlot(OutputClass);}voidRLPwidget::cmExport(){ OpenExportName(BaseObj, "hello.svg"); BaseObj->DoPlot(0L);}voidRLPwidget::cmDelObj(){ if(CurrGO && CurrGO->parent && CurrGO->parent-> Command(CMD_DELOBJ, (void*)CurrGO, OutputClass)) { CurrGO = 0L; OutputClass->Erase(defs.Color(COL_BG)); BaseObj->DoPlot(OutputClass); } else if(!CurrGO) InfoBox("No object selected!");}voidRLPwidget::cmUpdate(){ if(BaseObj) BaseObj->Command(CMD_UPDATE, 0L, OutputClass);}voidRLPwidget::cmDefaults(){ BaseObj->Command(CMD_CONFIG, 0L, OutputClass);}voidRLPwidget::cmAddAxis(){ BaseObj->Command(CMD_ADDAXIS, 0L, OutputClass);}voidRLPwidget::cmUndo(){ BaseObj->Command(CMD_UNDO, 0L, OutputClass);}voidRLPwidget::cmFillRange(){ BaseObj->Command(CMD_FILLRANGE, 0L, OutputClass);}
void
RLPwidget::cmInsRow()
{
BaseObj->Command(CMD_INSROW, 0L, OutputClass);
}
void
RLPwidget::cmInsCol()
{
BaseObj->Command(CMD_INSCOL, 0L, OutputClass);
}
void
RLPwidget::cmDelRow()
{
BaseObj->Command(CMD_DELROW, 0L, OutputClass);
}
void
RLPwidget::cmDelCol()
{
BaseObj->Command(CMD_DELCOL, 0L, OutputClass);
}
void ToolMenu(GraphObj *b, anyOutput *o, int tm){ if(b && o) b->Command(CMD_TOOLMODE, (void*)(& tm), o);}voidRLPwidget::cmtStandard(){ ToolMenu(BaseObj, OutputClass, TM_STANDARD);}voidRLPwidget::cmtDraw(){ ToolMenu(BaseObj, OutputClass, TM_DRAW);}voidRLPwidget::cmtPolyline(){ ToolMenu(BaseObj, OutputClass, TM_POLYLINE);}voidRLPwidget::cmtPolygon(){ ToolMenu(BaseObj, OutputClass, TM_POLYGON);}voidRLPwidget::cmtRectangle(){ ToolMenu(BaseObj, OutputClass, TM_RECTANGLE);}voidRLPwidget::cmtRoundrect(){ ToolMenu(BaseObj, OutputClass, TM_ROUNDREC);}voidRLPwidget::cmtEllipse(){ ToolMenu(BaseObj, OutputClass, TM_ELLIPSE);}voidRLPwidget::cmtArrow(){ ToolMenu(BaseObj, OutputClass, TM_ARROW);}voidRLPwidget::cmtText(){ ToolMenu(BaseObj, OutputClass, TM_TEXT);}//protected: widget eventsvoidRLPwidget::paintEvent(QPaintEvent *range){ QRect rc; rc = range->rect(); bitBlt(this, rc.left(), rc.top(), this->mempic, rc.left(), rc.top(), 1+rc.right()-rc.left(), 1+rc.bottom()-rc.top());}voidRLPwidget::resizeEvent(QResizeEvent *){ HScroll->resize(width() -16, 16); HScroll->move(0, height()-16); VScroll->resize(16, height()-OutputClass->MenuHeight-16); VScroll->move(width()-16, OutputClass->MenuHeight); if(BaseObj) BaseObj->Command(CMD_SETSCROLL, 0L, OutputClass);}voidRLPwidget::closeEvent(QCloseEvent *e){ if(BaseObj){
if(BaseObj->Command(CMD_CAN_CLOSE, 0L, 0L)) {
if(OutputClass)((OutputQT*)OutputClass)->widget = 0L;
OutputClass = 0L;
BaseObj = 0L; e->accept();
}
}
else e->accept();}voidRLPwidget::mouseDoubleClickEvent(QMouseEvent *e){ MouseEvent mev = {1, e->button() == Qt::LeftButton?MOUSE_LBDOUBLECLICK:-1,e->x(),e->y()}; if (BaseObj)BaseObj->Command(CMD_MOUSE_EVENT, (void *)&mev, OutputClass);}voidRLPwidget::mousePressEvent(QMouseEvent *e){
int i; MouseEvent mev = {1, e->button() == Qt::LeftButton ? MOUSE_LBDOWN : -1, e->x(), e->y()}; HideTextCursor(); i = e->state();
if(i & Qt::ShiftButton) mev.StateFlags |= 0x08;
if(i & Qt::ControlButton) mev.StateFlags |= 0x10;
if (BaseObj)BaseObj->Command(CMD_MOUSE_EVENT, (void *)&mev, OutputClass);}voidRLPwidget::mouseReleaseEvent(QMouseEvent *e){
int i;
MouseEvent mev = {0, e->button() == Qt::LeftButton ? MOUSE_LBUP : e->button() == Qt::RightButton ? MOUSE_RBUP : -1, e->x(), e->y()};
i = e->state();
if(i & Qt::ShiftButton) mev.StateFlags |= 0x08;
if(i & Qt::ControlButton) mev.StateFlags |= 0x10;
if (BaseObj) BaseObj->Command(CMD_MOUSE_EVENT, (void *)&mev, OutputClass);}voidRLPwidget::mouseMoveEvent(QMouseEvent *e){
int i; MouseEvent mev = {0, MOUSE_MOVE, e->x(), e->y()}; i = e->state();
if(i & Qt::LeftButton) mev.StateFlags |= 0x01;
if(i & Qt::ShiftButton) mev.StateFlags |= 0x08;
if(i & Qt::ControlButton) mev.StateFlags |= 0x10;
if (BaseObj) BaseObj->Command(CMD_MOUSE_EVENT, (void *)&mev, OutputClass);}voidRLPwidget::keyPressEvent(QKeyEvent *e){ int i, c; if(BaseObj) switch(c = e->key()) { case Key_Prior: i = e->state();
if(i & Qt::ShiftButton) BaseObj->Command(CMD_SHPGUP, 0L, OutputClass);
else BaseObj->Command(CMD_PAGEUP, 0L, OutputClass); break; case Key_Next: i = e->state();
if(i & Qt::ShiftButton) BaseObj->Command(CMD_SHPGDOWN, 0L, OutputClass);
else BaseObj->Command(CMD_PAGEDOWN, 0L, OutputClass); break; case Key_Left: if(e->state() & ShiftButton) BaseObj->Command(CMD_SHIFTLEFT, 0L, OutputClass); else BaseObj->Command(CMD_CURRLEFT, 0L, OutputClass); break; case Key_Ri
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -