C++ (Qt)//WidgetImage.cpp //Передаётся в конструктор вторым параметром путь к загружаемому изображениюWidgetImage::WidgetImage(QWidget* pwgt/*=0*/, QString sFileName) : QWidget(pwgt){//Копирование пути в глобальную переменную, //для использования в обработчике события рисования str1 = sFileName;} /*virtual*/ void WidgetImage::paintEvent(QPaintEvent*){ QImage img(str1);//Загрузка изображения QPainter painter; painter.begin(this);//На img2 рисуется изображение из img масштабируемо по высоте QImage img2 = img.scaledToHeight(height()); painter.drawImage(0, 0, img2);//Отрисовка на виджите painter.end();} //TestSystem.cppTestSystem::TestSystem(QMainWindow *pwgt /* = 0*/): QMainWindow(pwgt){ setupUi(this);... QSplitter* splitEditHV;//Объявление разделителя... splitEditHV = new QSplitter(Qt::Vertical);//Создание разделителя вертикально...//Создание виджита в разделителе с передачей загружаемого изображения widgetImage = new WidgetImage(splitEditHV, "/tmp/shelk-test-0.4.2/temp/tempimage"); widgetImage->resize(300, 300);//Изменение размера виджета...}
C++ (Qt) QString RegimePassword;//Пароль режима QByteArray baPassword;//Хеш пароля; RegimePassword = "Password"; baPassword.append(RegimePassword); baPassword = baPassword.toBase64(); baPassword = qCompress(baPassword, 9); baPassword = baPassword.toBase64(); baPassword = qCompress(baPassword, 9); baPassword = baPassword.toBase64(); RegimePassword.clear(); RegimePassword.append(baPassword);
C++ (Qt)//Структура файла свойствstruct sFileSettings{ bool gRegimeViewing,//true - Режим просмотра, false - Режим редактирования LanguageProgram,//Язык программы bStandardPanel,//Состояние показа стандартной панели bEditPanel,//Состояние показа панели редактирования bFormatPanel,//Состояние показа панели форматирования bTimePanel,//Состояние показа панели времени bPointPanel,//Состояние показа панели баллов bLimitTime,//Ограничение времени bAutoStartTest;//Автоматический запуск QString RegimePassword;//Пароль режима}; //Структура тестаstruct sShelkTestVar{ QString sNameTest,//Название теста sAllPoint,//Все баллы строкой sMidPoint,//Средний балл строкой sCurrentPoint,//Текущий балл строкой sTypeQuestion,//Тип вопроса TestPassword,//Пароль теста StatNameTest,//Имя пользователя в статистике sQuestion,//Текст вопроса sTimeStart;//Время начала int CountQuestion,//Количество вопросов iNumberQuestion,//Номер вопроса iNumberTest,//Номер теста AllPoint,//Общий балл MidPoint,//Средний балл CurrentPoint,//Текущий балл AllPointCheck,//Общий балл для проверки AllTime,//Общее время MidTime,//Среднее время CurrentTime,//Текущее время i5First;//Номер прошлого выделенного ответа (установка последовательности) QVector<double> *iRangeFirst,//Начальное значение диапазона (ввод числа) *iRangeLast;//Конечное значение диапазона (ввод числа) QStringList ListQuestions,//Список вопросов slTableNumber,//Список номеров таблиц в базе тестов slQuestionType,//Список типов вопросов slPoint,//Список баллов slTime;//Список времени QVector<QVariant> *ListRightAnswer,//Список правильных ответов *ListCheckRightAnswer;//Список правильных ответов для проверки QVector<QStringList> *ListAnswers;//Список ответов QVector<QByteArray> *ListImages;//Список изображений QVector<QFont> *ListFonts;//Список шрифтов QSqlDatabase db;//База данных тестов QTimer TimerTest, TimerTestLabel; QTime TimeTestCurrent, TimeTestAll;};
C++ (Qt)bool ShelkTest::MakeCheckRightAnswer(int iIndex){ int iTypeR; QString str1, str2; QByteArray ba1, ba2; iTypeR = vShelkTestVar->ListRightAnswer->at(iIndex).type(); if(iTypeR == QVariant::Int) { if(vShelkTestVar->ListRightAnswer->at(iIndex).toInt() == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toInt()) return true; else return false; } if(iTypeR == QVariant::Double) { if(vShelkTestVar->ListRightAnswer->at(iIndex).toDouble() == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toDouble()) return true; else return false; } if(iTypeR == QVariant::String) { if(vShelkTestVar->ListRightAnswer->at(iIndex).toString() == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toString()) return true; else return false; } if(iTypeR == QVariant::ByteArray) { ba1.append(vShelkTestVar->ListRightAnswer->at(iIndex).toByteArray()); ba2.append(vShelkTestVar->ListCheckRightAnswer->at(iIndex).toByteArray()); str1.append(vShelkTestVar->ListRightAnswer->at(iIndex).toByteArray()); str2.append(vShelkTestVar->ListCheckRightAnswer->at(iIndex).toByteArray()); if(vShelkTestVar->ListRightAnswer->at(iIndex).toByteArray() == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toByteArray()) return true; else return false; } if(iTypeR == QVariant::StringList) { if(vShelkTestVar->ListRightAnswer->at(iIndex).toStringList() == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toStringList()) return true; else return false; } return false;}
C++ (Qt)//const.h//Определение путей констант, в соответствии с системой#if defined(Q_WS_WIN) #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwst" #define PATH_SHARE_DOC QApplication::applicationDirPath() #define PATH_SHARE_APP QApplication::applicationDirPath() #define PATH_TMP QApplication::applicationDirPath() #elif defined(Q_WS_X11) #define PATH_TMP_SET "/tmp/shelk-test-0.4.7/settings.xwst" #define PATH_SHARE_DOC "/usr/share/doc/shelk-test-0.4.7" #define PATH_SHARE_APP "/usr/share/shelk-test-0.4.7" #define PATH_TMP "/tmp/shelk-test-0.4.7" #elif defined(Q_WS_MAC) #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwst" #define PATH_SHARE_DOC QApplication::applicationDirPath() #define PATH_SHARE_APP QApplication::applicationDirPath() #define PATH_TMP QApplication::applicationDirPath() #endif #define MODE_VIEW true#define MODE_EDIT false #define LANGUAGE_RUSSIAN true#define LANGUAGE_ENGLISH false #define TOOLBAR_SHOW true#define TOOLBAR_HIDE false #define STATISTICS_FIELD_SHOW true#define STATISTICS_FIELD_HIDE false #define VIEW_RUSSIAN 0#define VIEW_ENGLISH 1#define EDIT_RUSSIAN 2#define EDIT_ENGLISH 3 //Типы вопросов#define TYPE_ONE_ANSWER "1"#define TYPE_MANY_ANSWERS "2"#define TYPE_ENTER_WORD "3"#define TYPE_ENTER_NUMBER "4"#define TYPE_INSTALLATION_SEQUENCE "5"
C++ (Qt)//Структура показа полей статистикиstruct TStateFieldStatistics{ bool bUserName,//Имя пользователя bNameTest,//Название теста bTotalQuestions,//Всего вопросов bCorrectAnswers,//Правильных ответов bWrongAnswers,//Неправильных ответов bTotalPoints,//Всего баллов bScore,//Оценка bDate,//Дата bTimeBegin,//Время начала bTimeEnd,//Время окончания bElapsedTime;//Прошедшее время};
C++ (Qt) bool Accept; QFont TextFont; TextFont = TextQuestion->textCursor().charFormat().font(); TextFont = QFontDialog::getFont(&Accept, TextFont); if(Accept) { QTextCharFormat tcf; tcf.setFont(TextFont); TextQuestion->textCursor().setCharFormat(tcf); cbFont.setCurrentFont(TextFont); } else return 1;
C++ (Qt)//Новые константы//Типы вопросов для определения содержимого переменной QVariant#define V_TYPE_ONE_ANSWER QVariant::Int#define V_TYPE_MANY_ANSWERS QVariant::ByteArray#define V_TYPE_ENTER_WORD QVariant::String#define V_TYPE_ENTER_NUMBER QVariant::Double#define V_TYPE_INSTALLATION_SEQUENCE QVariant::StringList //Перевод слов в rtf-unicodeQString ShelkTest::WordToUnicode(QString sWord){ QString sTemp, sNum; sTemp.clear(); for (int i = 0; i < sWord.length(); i++) { sNum.setNum(sWord.at(i).unicode()); sTemp.append("\\u" + sNum + "?"); } return sTemp;}
C++ (Qt)private: QWebView *wvUpdate;//Для обновления и печати :)
C++ (Qt)void ShelkTest::slotCheckForUpdates(){ connect(wvUpdate, SIGNAL(loadFinished(bool)), SLOT(slotMakeCheckUpdates(bool))); wvUpdate->load(QUrl("http://labfreetech.org/shelk_1.0.0.html"));} void ShelkTest::slotMakeCheckUpdates(bool bError){ if (bError && wvUpdate->page()->findText("new_version")) QMessageBox::information(0, tr("Information"), tr("On the official website available a new version!")); else QMessageBox::information(0, tr("Information"), tr("You have the latest version!")); disconnect(wvUpdate, SIGNAL(loadFinished(bool)), 0, 0);}
C++ (Qt)... QString s_NameTest;//Название теста QByteArray ba_TestPassword;//Пароль теста public: QVector<TQuestion> vListQuestions;//Список вопросов QVector<TAnswer> vListAnswers;//Список ответов QTimer TimerTest; QTimer TimerTestLabel; QTime TimeTestCurrent; QTime TimeTestAll; TTest(); ~TTest(); int countQuestions() const;//Получить количество вопросов void setCountQuestions(int iCountQuestions);//Задать количество вопросов ...
C++ (Qt) for (int i = 0; i < TestDepository->Test->vListQuestions.count(); i++) { TestDepository->paTemp[i].clear();//Указатель на TestDepository->Test->vListAnswers TestDepository->pqTemp[i].clear();//Указатель на TestDepository->Test->vListQuestions } TestDepository->TestAnswer.clear(); TestDepository->TestQuestion.clear(); TestDepository->Test->vListAnswers.clear(); TestDepository->Test->vListQuestions.clear();