IncrementalPlot::IncrementalPlot( QWidget *parent ): QwtPlot( parent ), d_curve( NULL ) { d_directPainter = new QwtPlotDirectPainter( this ); setCanvasBackground(QColor(Qt::black)); setAxisScale(QwtPlot::yLeft, 0, 1024); setAxisScale(QwtPlot::xBottom, 0, 5000); if ( QwtPainter::isX11GraphicsSystem() ) { #if QT_VERSION < 0x050000 canvas()->setAttribute( Qt::WA_PaintOutsidePaintEvent, true ); #endif canvas()->setAttribute( Qt::WA_PaintOnScreen, true ); } d_curve = new QwtPlotCurve( "Test Curve" ); d_curve->setData( new CurveData() ); showSymbols( true ); d_curve->attach( this ); setAutoReplot( false ); }
XYVirtualKeyboard::XYVirtualKeyboard(QWidget *parent) : QWidget(parent), triangleBtnPressed(false), resizeType(No) { this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool); #if QT_VERSION >= 0x050000 this->setWindowFlags(this->windowFlags() | Qt::WindowDoesNotAcceptFocus); #endif connect(this, SIGNAL(triangleBtnClicked()), this, SLOT(triangleBtnClickedOP())); letterWidget = new QWidget; numberWidget = new QWidget; letterLabel = new XYMovableLabel; letterLabel->setMinimumWidth(30); QFont font = letterLabel->font(); font.setPixelSize(20); font.setUnderline(true); letterLabel->setFont(font); translateHView = new XYHDragableTranslateView; connect(translateHView, SIGNAL(clicked(QString,int)), this, SLOT(userSelectChinese(QString,int))); translateHDragableWidget = new XYDragableWidget(translateHView, XYDragableWidget::HORIZONTAL); translateHDragableWidget->setMinimumHeight(30); translateHDragableWidget->setMouseSensitivity(5); translateVView = new XYVDragableTranslateView; translateVView->setUnitMinWidth(50); translateVView->setUnitMinHeight(40); connect(translateVView, SIGNAL(clicked(QString,int)), this, SLOT(userSelectChinese(QString,int))); connect(translateVView, SIGNAL(stringPressed(QString,QPoint)), this, SLOT(showTempWindow(QString,QPoint))); translateVDragableWidget = new XYDragableWidget(translateVView, XYDragableWidget::VERTICAL); translateVDragableWidget->setMouseSensitivity(5); translateVDragableWidget->setHidden(true); symbolView = new XYVDragableTranslateView; symbolView->setUnitMinWidth(50); symbolView->setUnitMinHeight(40); symbolView->dataStrings = loadSymbols(":/symbol.txt"); connect(symbolView, SIGNAL(clicked(QString,int)), this, SLOT(symbolSeleted(QString,int))); connect(symbolView, SIGNAL(stringPressed(QString,QPoint)), this, SLOT(showTempWindow(QString,QPoint))); symbolDragableWidget = new XYDragableWidget(symbolView, XYDragableWidget::VERTICAL); symbolDragableWidget->setMouseSensitivity(15); funcHView = new XYHDragableTranslateView; funcHView->setUnitMinWidth(50); funcHView->setUnitMinHeight(40); #if QT_VERSION < 0x050000 funcHView->dataStrings << QString::fromUtf8("换肤") << QString::fromUtf8("表情") << QString::fromUtf8("设置") << QString::fromUtf8("功能") << QString::fromUtf8("手势") << QString::fromUtf8("搜索") << QString::fromUtf8("更多"); #else funcHView->dataStrings << QStringLiteral("换肤") << QStringLiteral("表情") << QStringLiteral("设置") << QStringLiteral("功能") << QStringLiteral("手势") << QStringLiteral("搜索") << QStringLiteral("更多"); #endif connect(funcHView, SIGNAL(clicked(QString,int)), this, SLOT(funcClicked(QString,int))); funcDragableWidget = new XYDragableWidget(funcHView, XYDragableWidget::HORIZONTAL); funcDragableWidget->setMinimumHeight(30); funcDragableWidget->setMouseSensitivity(5); QGridLayout *letter_layout = new QGridLayout(letterWidget); letter_layout->setContentsMargins(3, 0, 3, 0); letter_layout->setHorizontalSpacing(5); letter_layout->setVerticalSpacing(5); int row = 0; int column = 0; // 字母控件 XYPushButton *main_letterQ = new XYPushButton("Q", Qt::Key_Q); XYPushButton *main_letterW = new XYPushButton("W", Qt::Key_W); XYPushButton *main_letterE = new XYPushButton("E", Qt::Key_E); XYPushButton *main_letterR = new XYPushButton("R", Qt::Key_R); XYPushButton *main_letterT = new XYPushButton("T", Qt::Key_T); XYPushButton *main_letterY = new XYPushButton("Y", Qt::Key_Y); XYPushButton *main_letterU = new XYPushButton("U", Qt::Key_U); XYPushButton *main_letterI = new XYPushButton("I", Qt::Key_I); XYPushButton *main_letterO = new XYPushButton("O", Qt::Key_O); XYPushButton *main_letterP = new XYPushButton("P", Qt::Key_P); row = 0; column = 0; letter_layout->addWidget(main_letterQ, row, column++); letter_layout->addWidget(main_letterW, row, column++); letter_layout->addWidget(main_letterE, row, column++); letter_layout->addWidget(main_letterR, row, column++); letter_layout->addWidget(main_letterT, row, column++); letter_layout->addWidget(main_letterY, row, column++); letter_layout->addWidget(main_letterU, row, column++); letter_layout->addWidget(main_letterI, row, column++); letter_layout->addWidget(main_letterO, row, column++); letter_layout->addWidget(main_letterP, row, column++); XYPushButton *main_tab = new XYPushButton("Tab", Qt::Key_Tab); XYPushButton *main_letterA = new XYPushButton("A", Qt::Key_A); XYPushButton *main_letterS = new XYPushButton("S", Qt::Key_S); XYPushButton *main_letterD = new XYPushButton("D", Qt::Key_D); XYPushButton *main_letterF = new XYPushButton("F", Qt::Key_F); XYPushButton *main_letterG = new XYPushButton("G", Qt::Key_G); XYPushButton *main_letterH = new XYPushButton("H", Qt::Key_H); XYPushButton *main_letterJ = new XYPushButton("J", Qt::Key_J); XYPushButton *main_letterK = new XYPushButton("K", Qt::Key_K); XYPushButton *main_letterL = new XYPushButton("L", Qt::Key_L); row = 1; column = 0; letter_layout->addWidget(main_tab, row, column++); letter_layout->addWidget(main_letterA, row, column++); letter_layout->addWidget(main_letterS, row, column++); letter_layout->addWidget(main_letterD, row, column++); letter_layout->addWidget(main_letterF, row, column++); letter_layout->addWidget(main_letterG, row, column++); letter_layout->addWidget(main_letterH, row, column++); letter_layout->addWidget(main_letterJ, row, column++); letter_layout->addWidget(main_letterK, row, column++); letter_layout->addWidget(main_letterL, row, column++); XYPushButton *main_shift = new XYPushButton("Shift", Qt::Key_Shift); main_shift->setCheckable(true); connect(main_shift, SIGNAL(checkedChanged(bool)), this, SLOT(caseChanged(bool))); XYPushButton *main_letterZ = new XYPushButton("Z", Qt::Key_Z); XYPushButton *main_letterX = new XYPushButton("X", Qt::Key_X); XYPushButton *main_letterC = new XYPushButton("C", Qt::Key_C); XYPushButton *main_letterV = new XYPushButton("V", Qt::Key_V); XYPushButton *main_letterB = new XYPushButton("B", Qt::Key_B); XYPushButton *main_letterN = new XYPushButton("N", Qt::Key_N); XYPushButton *main_letterM = new XYPushButton("M", Qt::Key_M); XYPushButton *main_Exclam = new XYPushButton("!", Qt::Key_Exclam); XYPushButton *main_backspace = new XYPushButton("", Qt::Key_Backspace); row = 2; column = 0; letter_layout->addWidget(main_shift, row, column++); letter_layout->addWidget(main_Exclam, row, column++); letter_layout->addWidget(main_letterZ, row, column++); letter_layout->addWidget(main_letterX, row, column++); letter_layout->addWidget(main_letterC, row, column++); letter_layout->addWidget(main_letterV, row, column++); letter_layout->addWidget(main_letterB, row, column++); letter_layout->addWidget(main_letterN, row, column++); letter_layout->addWidget(main_letterM, row, column++); letter_layout->addWidget(main_backspace, row, column++); XYPushButton *main_ctrl = new XYPushButton("Ctrl", Qt::Key_Control); main_ctrl->setCheckable(true); XYPushButton *main_alt = new XYPushButton("Alt", Qt::Key_Alt); main_alt->setCheckable(true); XYPushButton *main_symbol = new XYPushButton("#+-=", Qt::Key_Meta); connect(main_symbol, SIGNAL(clicked()), this, SLOT(showSymbols())); XYPushButton *main_angleComma = new XYPushButton(",", Qt::Key_Comma); XYPushButton *main_space = new XYPushButton(" ", Qt::Key_Space); XYPushButton *main_anglePeriod = new XYPushButton(".", Qt::Key_Period); XYPushButton *showNumBtn = new XYPushButton("123", Qt::Key_Meta); connect(showNumBtn, SIGNAL(clicked()), this, SLOT(showNumberWidget())); switchLanguageBtn = new XYPushButton("", Qt::Key_Menu); connect(switchLanguageBtn, SIGNAL(clicked()), this, SLOT(languageChanged())); XYPushButton *main_Return = new XYPushButton("", Qt::Key_Return); row = 3; column = 0; letter_layout->addWidget(showNumBtn, row, column++); letter_layout->addWidget(main_ctrl, row, column++); letter_layout->addWidget(main_alt, row, column++); letter_layout->addWidget(main_symbol, row, column++); letter_layout->addWidget(main_space, row, column++, 1, 2); column++; letter_layout->addWidget(main_anglePeriod, row, column++); letter_layout->addWidget(main_angleComma, row, column++); letter_layout->addWidget(switchLanguageBtn, row, column++); letter_layout->addWidget(main_Return, row, column++); // 装入shift需要改变内容的控件 allShiftChangeKeys.append(main_letterA); allShiftChangeKeys.append(main_letterB); allShiftChangeKeys.append(main_letterC); allShiftChangeKeys.append(main_letterD); allShiftChangeKeys.append(main_letterE); allShiftChangeKeys.append(main_letterF); allShiftChangeKeys.append(main_letterG); allShiftChangeKeys.append(main_letterH); allShiftChangeKeys.append(main_letterI); allShiftChangeKeys.append(main_letterJ); allShiftChangeKeys.append(main_letterK); allShiftChangeKeys.append(main_letterL); allShiftChangeKeys.append(main_letterM); allShiftChangeKeys.append(main_letterN); allShiftChangeKeys.append(main_letterO); allShiftChangeKeys.append(main_letterP); allShiftChangeKeys.append(main_letterQ); allShiftChangeKeys.append(main_letterR); allShiftChangeKeys.append(main_letterS); allShiftChangeKeys.append(main_letterT); allShiftChangeKeys.append(main_letterU); allShiftChangeKeys.append(main_letterV); allShiftChangeKeys.append(main_letterW); allShiftChangeKeys.append(main_letterX); allShiftChangeKeys.append(main_letterY); allShiftChangeKeys.append(main_letterZ); QGridLayout *numbers_layout = new QGridLayout(numberWidget); numbers_layout->setContentsMargins(3, 0, 3, 0); numbers_layout->setHorizontalSpacing(5); numbers_layout->setVerticalSpacing(5); // 数字控件 XYPushButton *main_Underscore = new XYPushButton("_", Qt::Key_Underscore); XYPushButton *main_AsciiTilde = new XYPushButton("~", Qt::Key_AsciiTilde); XYPushButton *main_Percent = new XYPushButton("%", Qt::Key_Percent); XYPushButton *main_Asterisk = new XYPushButton("*", Qt::Key_Asterisk); XYPushButton *main_number1 = new XYPushButton("1", Qt::Key_1); XYPushButton *main_number2 = new XYPushButton("2", Qt::Key_2); XYPushButton *main_number3 = new XYPushButton("3", Qt::Key_3); XYPushButton *main_Question = new XYPushButton("?", Qt::Key_Question); XYPushButton *main_At = new XYPushButton("@", Qt::Key_At); XYPushButton *main_ParenLeft = new XYPushButton("(", Qt::Key_ParenLeft); XYPushButton *main_backspace1 = new XYPushButton("", Qt::Key_Backspace); row = 0; column = 0; numbers_layout->addWidget(main_Underscore, row, column++); numbers_layout->addWidget(main_AsciiTilde, row, column++); numbers_layout->addWidget(main_Percent, row, column++); numbers_layout->addWidget(main_Asterisk, row, column++); numbers_layout->addWidget(main_number1, row, column++); numbers_layout->addWidget(main_number2, row, column++); numbers_layout->addWidget(main_number3, row, column++); numbers_layout->addWidget(main_Question, row, column++); numbers_layout->addWidget(main_At, row, column++); numbers_layout->addWidget(main_ParenLeft, row, column++); numbers_layout->addWidget(main_backspace1, row, column++); XYPushButton *main_QuoteDbl = new XYPushButton("\"", Qt::Key_QuoteDbl); XYPushButton *main_Exclam1 = new XYPushButton("!", Qt::Key_Exclam); XYPushButton *main_Bar = new XYPushButton("|", Qt::Key_Bar); XYPushButton *main_Minus = new XYPushButton("-", Qt::Key_Minus); XYPushButton *main_number4 = new XYPushButton("4", Qt::Key_4); XYPushButton *main_number5 = new XYPushButton("5", Qt::Key_5); XYPushButton *main_number6 = new XYPushButton("6", Qt::Key_6); XYPushButton *main_BracketLeft = new XYPushButton("[", Qt::Key_BracketLeft); XYPushButton *main_NumberSign = new XYPushButton("#", Qt::Key_NumberSign); XYPushButton *main_ParenRight = new XYPushButton(")", Qt::Key_ParenRight); XYPushButton *main_Dollar = new XYPushButton("$", Qt::Key_Dollar); row = 1; column = 0; numbers_layout->addWidget(main_QuoteDbl, row, column++); numbers_layout->addWidget(main_Exclam1, row, column++); numbers_layout->addWidget(main_Bar, row, column++); numbers_layout->addWidget(main_Minus, row, column++); numbers_layout->addWidget(main_number4, row, column++); numbers_layout->addWidget(main_number5, row, column++); numbers_layout->addWidget(main_number6, row, column++); numbers_layout->addWidget(main_BracketLeft, row, column++); numbers_layout->addWidget(main_NumberSign, row, column++); numbers_layout->addWidget(main_ParenRight, row, column++); numbers_layout->addWidget(main_Dollar, row, column++); XYPushButton *main_QuoteLeft = new XYPushButton("`", Qt::Key_QuoteLeft); XYPushButton *main_Ampersand = new XYPushButton("&", Qt::Key_Ampersand); XYPushButton *main_Less = new XYPushButton("<", Qt::Key_Less); XYPushButton *main_Plus = new XYPushButton("+", Qt::Key_Plus); XYPushButton *main_number7 = new XYPushButton("7", Qt::Key_7); XYPushButton *main_number8 = new XYPushButton("8", Qt::Key_8); XYPushButton *main_number9 = new XYPushButton("9", Qt::Key_9); XYPushButton *main_BracketRight = new XYPushButton("]", Qt::Key_BracketRight); XYPushButton *main_AsciiCircum = new XYPushButton("^", Qt::Key_AsciiCircum); XYPushButton *main_BraceLeft = new XYPushButton("{", Qt::Key_BraceLeft); XYPushButton *main_Comma = new XYPushButton(",", Qt::Key_Comma); row = 2; column = 0; numbers_layout->addWidget(main_QuoteLeft, row, column++); numbers_layout->addWidget(main_Ampersand, row, column++); numbers_layout->addWidget(main_Less, row, column++); numbers_layout->addWidget(main_Plus, row, column++); numbers_layout->addWidget(main_number7, row, column++); numbers_layout->addWidget(main_number8, row, column++); numbers_layout->addWidget(main_number9, row, column++); numbers_layout->addWidget(main_BracketRight, row, column++); numbers_layout->addWidget(main_AsciiCircum, row, column++); numbers_layout->addWidget(main_BraceLeft, row, column++); numbers_layout->addWidget(main_Comma, row, column++); XYPushButton *showLetterBtn = new XYPushButton("ABC", Qt::Key_Meta); connect(showLetterBtn, SIGNAL(clicked()), this, SLOT(showLetterWidget())); XYPushButton *main_Backslash = new XYPushButton("\\", Qt::Key_Backslash); XYPushButton *main_Greater = new XYPushButton(">", Qt::Key_Greater); XYPushButton *main_Slash = new XYPushButton("/", Qt::Key_Slash); XYPushButton *main_Period = new XYPushButton(".", Qt::Key_Period); XYPushButton *main_number0 = new XYPushButton("0", Qt::Key_0); XYPushButton *main_Equal = new XYPushButton("=", Qt::Key_Equal); XYPushButton *main_Colon = new XYPushButton(":", Qt::Key_Colon); XYPushButton *main_Semicolon = new XYPushButton(";", Qt::Key_Semicolon); XYPushButton *main_BraceRight = new XYPushButton("}", Qt::Key_BraceRight); XYPushButton *main_enter = new XYPushButton("", Qt::Key_Enter); row = 3; column = 0; numbers_layout->addWidget(showLetterBtn, row, column++); numbers_layout->addWidget(main_Backslash, row, column++); numbers_layout->addWidget(main_Greater, row, column++); numbers_layout->addWidget(main_Slash, row, column++); numbers_layout->addWidget(main_Period, row, column++); numbers_layout->addWidget(main_number0, row, column++); numbers_layout->addWidget(main_Equal, row, column++); numbers_layout->addWidget(main_Colon, row, column++); numbers_layout->addWidget(main_Semicolon, row, column++); numbers_layout->addWidget(main_BraceRight, row, column++); numbers_layout->addWidget(main_enter, row, column++); stackedWidget = new QStackedWidget; stackedWidget->addWidget(letterWidget); stackedWidget->addWidget(numberWidget); stackedWidget->addWidget(translateVDragableWidget); stackedWidget->addWidget(symbolDragableWidget); stackedWidget->setCurrentWidget(letterWidget); QHBoxLayout *top_layout = new QHBoxLayout; top_layout->setContentsMargins(10, 2, 60, 2); top_layout->addWidget(letterLabel); top_layout->addSpacing(10); top_layout->addWidget(translateHDragableWidget, 1); top_layout->addWidget(funcDragableWidget, 1); QVBoxLayout *main_layout = new QVBoxLayout(this); main_layout->setContentsMargins(5, 2, 5, 8); main_layout->addLayout(top_layout); main_layout->addSpacing(4); main_layout->addWidget(stackedWidget); // 关联按键信号 for (int i = 0; i < XYPushButton::allKeyBtns.size(); ++i) { XYPushButton::allKeyBtns.at(i)->installEventFilter(this); connect(XYPushButton::allKeyBtns.at(i), SIGNAL(clicked(int,int,Qt::KeyboardModifiers,bool)), this, SLOT(keyClicked(int,int,Qt::KeyboardModifiers,bool))); connect(XYPushButton::allKeyBtns.at(i), SIGNAL(mousePressed(XYPushButton*)), this, SLOT(keyPressed(XYPushButton*))); connect(XYPushButton::allKeyBtns.at(i), SIGNAL(mouseReleaseed(XYPushButton*)), this, SLOT(keyReleaseed(XYPushButton*))); } connect(XYSKIN, SIGNAL(skinChanged()), this, SLOT(skinChanged())); caseChanged(false); skinChanged(); initPinyinDictionary(); }