На сколько я понимаю они нужны если вы планируете использовать свои классы в QtDesigner. А уж нужно оно вам или нет - это вам решать. Лично я не использую, впрочем как и не использую Designer (хотя это, наверное, не очень правильно - т.к. тоже уровень разделения интерфейса и функционала). Если вы наследуетесь от стандартных GUIвых классов и используете дизайнер, вероятно это полезно, для тех кто захочет работать с вашим проектом
Программа для создания кроссвордов (Обсуждение исходника)
Модератор: Модераторы разделов
-
- Сообщения: 1205
- ОС: Debian Wheezy (amd64)
Re: Программа для создания кроссвордов
На сколько я понимаю они нужны если вы планируете использовать свои классы в QtDesigner. А уж нужно оно вам или нет - это вам решать. Лично я не использую, впрочем как и не использую Designer (хотя это, наверное, не очень правильно - т.к. тоже уровень разделения интерфейса и функционала). Если вы наследуетесь от стандартных GUIвых классов и используете дизайнер, вероятно это полезно, для тех кто захочет работать с вашим проектом
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
-
- Сообщения: 1205
- ОС: Debian Wheezy (amd64)
Re: Программа для создания кроссвордов
Кстати вот у меня в закладках есть по поводу проперти, в принципе дополнительный профит от использования:
Источник
Код: Выделить всё
class SomeClass : public QObject {
Q_OBJECT
Q_PROPERTY(bool prop READ prop WRITE setProp);
private:
bool var;
public:
SomeClass() : var(true) { }
bool prop() const { return var; }
void setProp(bool newValue) { var = newValue; }
};
//а теперь, имея указатель на QObject, мы можем изменять значения переменных унаследованного класса:
SomeClass *sc = new SomeClass;
QObject *obj = sc;
obj->setProperty("prop", true); //тоже самое, что и sc->setProp(true);
Источник
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Программа для создания кроссвордов
xwicked писал(а): ↑15.02.2012 23:45Поделюсь секретом: я хочу в будущем полностью разделить логику от ифейса. Это значит максимально возможное количество кода переписать на чистом С а то, что не получиться - на C++. Чтобы приобрести статус trueЫ. А функцию составления кроссворда выгрузить в разделяемую библиотеку и опубликовать её под BSD. Во как!
ЗЫ: значит у меня всё в норме
А как связана логика/интерфейс и язык программирования на котором они реализованы? Читая ваш пост невольно вспоминаю ту самую цитату. Ну и ваше желание стать Ъ - прекратите смешить людей, так вы ничего не добъетесь, написать библиотеку на С и лицензировать ее под BSD может абсолютно любой человек. А вот написать что-то нужное, что оценят другие - это верный путь.
Q_PROPERTY нужно только в случае если вы активно взаимодействуете с мета-информацией объектов (например, экспортируете свои классы в QScriptEngine).
-
- Сообщения: 115
- ОС: GNU / Linux Debian 7 amd64
-
- Сообщения: 115
- ОС: GNU / Linux Debian 7 amd64
Re: Программа для создания кроссвордов
Оптимизация констант: Экспорт в RTF вместе с изображением:Использовался материал Википедии. Скачать 1.0.0.
Код: Выделить всё
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};
Код: Выделить всё
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;
}
Список изменений:
- Повышена безопасность работы игры;
- Добавлен экспорт кроссворда в RTF;
- Исправлена нумерация вопросов кроссворда при печати и экспорте;
- Оптимизирована скорость отображения статистики;
- Изменён цветовой стиль сетки кроссворда, уменьшен контраст цветов;
-
- Сообщения: 115
- ОС: GNU / Linux Debian 7 amd64
Re: Программа для создания кроссвордов
Все изменения:
Новая версия 1.2.3
Мной было принято решение о прекращении сборок в linux-пакеты в пользу простоты установки, оформив всё в виде мастера-установщика как в ОС Оффтопик. В связи с замедлением процесса разработки прошу давать советы на крайне необходимые функции и указания на исправление критических ошибок.
Благодарю!
- Добавлена возможность создать словарь из текстового файла со
словами;
- Добавлена возможность выбора путей к файлу свойств, файлу статистики, файлу словаря;
- Исправлена фатальная ошибка при вводе слов в сетку, без координат слов;
- Добавлена поддержка файла кроссворда формата OpenKlest 1.1;
- Добавлено сохранение положений панелей инструментов при выходе из программы;
- Добавлены новые классы: TCell, TGrid и tfileoptions;
- Добавлена возможность удалённого расположения файла свойств;
- В свойства игры добавлены кнопки "Сбросить" и "Восстановить умолчания";
- Изменены ссылки баг-трекера и git;
- Добавлена возможность разворачивания на весь экран окон статистики и руководства пользователя;
- Название программы и номер версии вынесены в отдельный заголовочный файл;
Новая версия 1.2.3
Мной было принято решение о прекращении сборок в linux-пакеты в пользу простоты установки, оформив всё в виде мастера-установщика как в ОС Оффтопик. В связи с замедлением процесса разработки прошу давать советы на крайне необходимые функции и указания на исправление критических ошибок.
Благодарю!