C++ (Qt) QTextEdit textEdit; textEdit.setHtml(strHTML);#ifndef QT_NO_PRINTER QPrinter printer(QPrinter::HighResolution);//Настройка принтера на высокое качество printer.setOutputFormat(QPrinter::PostScriptFormat);//Выбор печати в файл PostScript printer.setOutputFileName(sExportName);//Присваивание имени файла textEdit.document()->print(&printer);//Сама печать #endif
C++ (Qt)ushort usTable[50][50];//Массив сетки кроссворда
C++ (Qt)ushort **usTable;//Массив сетки кроссворда...//Создание двумерного динамического массива usTable = new ushort*[TableKlestCrossword->rowCount()]; for(int i = 0; i < TableKlestCrossword->rowCount(); i++) usTable[i] = new ushort[TableKlestCrossword->columnCount()];
C++ (Qt)//Определение путей констант, в соответствии с системой#if defined(Q_WS_WIN) #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc" #define PATH_SHARE_DOC QApplication::applicationDirPath() #define PATH_SHARE_APP QApplication::applicationDirPath() #define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html" #elif defined(Q_WS_X11) #define PATH_TMP_SET "/tmp/klest-crossword-0.3.7/settings.xwsc" #define PATH_SHARE_DOC "/usr/share/doc/klest-crossword-0.3.7" #define PATH_SHARE_APP "/usr/share/klest-crossword-0.3.7" #define PATH_TMP_STAT "/tmp/klest-crossword-0.3.7/cstat.html" #elif defined(Q_WS_MAC) #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc" #define PATH_SHARE_DOC QApplication::applicationDirPath() #define PATH_SHARE_APP QApplication::applicationDirPath() #define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html" #endif //Пути для разработки и отладки программы/*#define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"#define PATH_SHARE_DOC QApplication::applicationDirPath()#define PATH_SHARE_APP QApplication::applicationDirPath()#define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"*/ #define MODE_VIEW true#define MODE_EDIT false #define ACROSS_ENABLE true#define ACROSS_DISABLE false #define LANGUAGE_RUSSIAN true#define LANGUAGE_ENGLISH false #define TOOLBAR_SHOW true#define TOOLBAR_HIDE false #define EXPORT_YES true#define EXPORT_NO false #define TYPE_PDF 0#define TYPE_POST_SCRIPT 1
C++ (Qt) switch(iTypeExport) { case TYPE_PDF: sFilter = ".pdf"; break; case TYPE_POST_SCRIPT: sFilter = ".ps"; break; case TYPE_HTML: sFilter = ".html"; break; case TYPE_TXT: sFilter = ".txt"; break; case TYPE_JPG: sFilter = ".jpg"; break; case TYPE_JPEG: sFilter = ".jpeg"; break; case TYPE_BMP: sFilter = ".bmp"; break; case TYPE_TIFF: sFilter = ".tiff"; break; case TYPE_PNG: sFilter = ".png"; break; case TYPE_XPM: sFilter = ".xpm"; break; case TYPE_XBM: sFilter = ".xbm"; break; case TYPE_PPM: sFilter = ".ppm"; break; case TYPE_OPEN_KLEST: sFilter = ".ok"; break; }
C++ (Qt)//Структура файла свойств программыstruct TFileOptions{ bool bModeWork,//Режим работы программы bLanguageProgram,//Язык программы bStateStandardToolbar,//Состояние показа стандартной панели bStateExport,//Состояние экспортирования bCurrentDictionary;//Текущий словарь QString sModePassword,//Пароль режима sPathCrossword,//Путь для кроссвордов sPathExport,//Путь для экспорта sPathTemplate;//Путь для шаблонов int iNumberTimes,//Количество раз iTypeExport;//Тип экспорта};
C++ (Qt)enum eTypeCrossword {TYPE_PDF, TYPE_POST_SCRIPT, TYPE_RTF, TYPE_HTML, TYPE_TXT, TYPE_JPG, TYPE_JPEG, TYPE_BMP, TYPE_TIFF, TYPE_PNG, TYPE_XPM, TYPE_XBM, TYPE_PPM, TYPE_OPEN_KLEST};
C++ (Qt)QString TCrosswordGrid::wordToUnicode(QString sWord){ QString sTemp; for (int i = 0; i < sWord.length(); i++)//Добавляет один символ Unicode, если этого не получается сделать, то отображается знак вопроса sTemp.append("\\u" + QString::number(sWord.at(i).unicode()) + "?"); return sTemp;} //Формирование RTF-документа и сохранениеvoid TCrosswordGrid::saveToRTF(QString sExportName, QString strRTF, QImage imgExport){ QByteArray baImage; QBuffer buffer(&baImage); buffer.open(QIODevice::WriteOnly); imgExport.save(&buffer, "BMP");//BMP как обязательный формат изображения baImage = baImage.toHex();//Побайтовое преобразование изображения в шестнадцатеричную форму QFile ifile(sExportName); QTextStream istream(&ifile); istream.setCodec("UTF-8");//UTF-8 кодировка документа ifile.open(QIODevice::WriteOnly);//Добавление информации об изображении с сохранением изначального размера istream << "{\\rtf1\n{\\pict\\wmetafile8\\picw" + QString::number(columnCount() * rowHeight(0) * 27) + "\\pich" + QString::number(rowCount() * rowHeight(0) * 27) + "\n"; int j = 0; for (int i = 0; i < baImage.size(); i++) { if (j == 128)//Если количество символов в строке == 128 { istream << "\n";//То перевод строки; Избавляет от ошибок, при чтении документа. j = 0; } istream << baImage.at(i); j++; } istream << "}\\par\\par\n"; istream << strRTF; istream << "}"; ifile.close();} //Формирование RTF-текста вопросов и ответовQString TCrosswordGrid::makeRTFText(QString ListWordH, QString ListWordV, QStringList ListOutV, QStringList ListOutH){ QString strRTF; QString strText1; QString strText2; QString strText3; for(int i = 0; i < ListOutH.count(); i++) { strText1.append(wordToUnicode(ListOutH.at(i)) + "\\par\n"); } strText2.clear(); for(int i = 0; i < ListOutV.count(); i++) { strText2.append(wordToUnicode(ListOutV.at(i)) + "\\par\n"); } strText3.clear(); strText3 = "{\\b " + wordToUnicode(tr("Horizontal")) + "}:\\par\n" + wordToUnicode(ListWordH) + "\\par\n" + "{\\b " + wordToUnicode(tr("Vertical")) +"}:\\par\n" + wordToUnicode(ListWordV) + "\\par\n"; strRTF.append("{\\b " + wordToUnicode(tr("Horizontal")) + "}:\\par\n" + strText1 + "\\par\n" "{\\b " + wordToUnicode(tr("Vertical")) + "}:\\par\n" + strText2 + "\\par\n" "{\\b\\i " + wordToUnicode(tr("Answers")) + "}:\\par\n" + strText3 + "\\par\n"); return strRTF;}