Ответы пользователя по тегу Qt
  • Шифр Цезаря на C++/Qt?

    Profi_GMan
    @Profi_GMan
    QString encode(QString input, int offset) {
        for(int i = 0; i < input.length(); i++) {
            int sym = 0;
            if(input[i].toLatin1() > 64 && input[i].toLatin1() < 91 && (sym = input[i].toLatin1() + offset) > 90)
                //Если буква большая и если буква + смещение превышает код буквы Z
                input[i] = QChar(sym - 90 + 64);
            //sym - 90 получаем, насколько превышает код буквы Z, + 65 прибавляем к коду символа до A полученный результат
            //Теперь тоже самое но с проверкой на маленькую букву
            else if(input[i].toLatin1() > 96 && input[i].toLatin1() < 123 && (sym = input[i].toLatin1() + offset) > 122)
                //Если буква маленькая и если буква + смещение превышает код буквы z
                input[i] = QChar(sym - 122 + 96);
            //sym - 90 получаем, насколько превышает код буквы z, + 65 прибавляем к коду символа до a полученный результат
            else input[i] = QChar(input[i].toLatin1() + offset);
        }
        return input;
    }
    
    QString decode(QString input, int offset) {
        for(int i = 0; i < input.length(); i++) {
            int sym = 0;
            if(input[i].toLatin1() > 64 && input[i].toLatin1() < 91 && (sym = input[i].toLatin1() - offset) < 65)
                //Если буква большая и если буква - смещение меньше кода буквы A
                input[i] = QChar(sym - 64 + 90);
            //Получаем исходный символ (обратно sym - 90 + 64)
            //Теперь тоже самое но с проверкой на маленькую букву
            else if(input[i].toLatin1() > 96 && input[i].toLatin1() < 123 && (sym = input[i].toLatin1() - offset) < 97)
                //Если буква маленькая и если буква - смещение меньше кода буквы a
                input[i] = QChar(sym - 96 + 122);
            //Получаем исходный символ (обратно sym - 122 + 96)
            else input[i] = QChar(input[i].toLatin1() - offset);
        }
        return input;
    }
    Ответ написан
    4 комментария
  • Какие существуют библиотеки для ловли исключений и их отправки?

    Profi_GMan
    @Profi_GMan Автор вопроса
    В общем библиотека - google breakpad.
    Нужно сначала её собрать. И вот как я это сделал:
    Для начала нужно закинуть в папку папка_с_брикпадом\src\third_party вот это (библиотека lss) https://yadi.sk/d/BmWlgUmx3SHqka
    На линукс Просто полностью её скачал, после чего в корневой папке сделал ./configure && make. После этого .а файл будет в папка_с_breakpad\src\client\linux\libbreakpad_client.a
    На винде, я создал вот такой вот .pro файл в корневой папке breakpad и скомпилировал его:
    spoiler
    TEMPLATE = lib
    CONFIG += staticlib

    INCLUDEPATH += $$PWD
    INCLUDEPATH += $$PWD/src

    # Windows
    win32:HEADERS += $$PWD/src/common/windows/string_utils-inl.h
    win32:HEADERS += $$PWD/src/common/windows/guid_string.h
    win32:HEADERS += $$PWD/src/client/windows/handler/exception_handler.h
    win32:HEADERS += $$PWD/src/client/windows/common/ipc_protocol.h
    win32:HEADERS += $$PWD/src/google_breakpad/common/minidump_format.h
    win32:HEADERS += $$PWD/src/google_breakpad/common/breakpad_types.h
    win32:HEADERS += $$PWD/src/client/windows/crash_generation/crash_generation_client.h
    win32:HEADERS += $$PWD/src/common/scoped_ptr.h
    win32:SOURCES += $$PWD/src/client/windows/handler/exception_handler.cc
    win32:SOURCES += $$PWD/src/common/windows/string_utils.cc
    win32:SOURCES += $$PWD/src/common/windows/guid_string.cc
    win32:SOURCES += $$PWD/src/client/windows/crash_generation/crash_generation_client.cc

    после чего, в корневой папке появится .а файл
    Теперь нужно его (.а файл) подключить (в qt это LIBS += путь\имя.a в про файле) и дальше подключать стоит только заголовочный файл client/windows/sender/crash_report_sender.h для винды и client/linux/sender/crash_report_sender.h и всё. О том, что делать далбше можно прочитать здесь:
    https://maxsavenkov.livejournal.com/189460.html для винды
    https://gist.github.com/byronwind/94c94ee00dc442c71638 для linux
    Ответ написан
    Комментировать
  • Как запустить QProcess::start() из неосновного потока?

    Profi_GMan
    @Profi_GMan Автор вопроса
    Во время запуска процесса у меня выводится подробно лог. Функция лога у меня своя. Оказалось, что именно она давала sigsegv
    Ответ написан
    Комментировать
  • Как перевести qbaytearray cp1251 в QString?

    Profi_GMan
    @Profi_GMan Автор вопроса
    Если сделать вот так:
    QTextCodec *codec = QTextCodec::codecForName("CP866");
                _output = codec->toUnicode(proc.readAll());
                qDebug()<<_output;

    то при выводе в qmessagebox(или в другой виджет) и в файл - всё работает, но в консоли qt creator всё равно кракозябры, но это не столь важно
    Ответ написан
    Комментировать
  • Как сделать, чтоб Qt воспринимала escape-последовательности?

    Profi_GMan
    @Profi_GMan Автор вопроса
    Исправил таким образом: qDebug() << qPrintable(...)
    Ответ написан
    Комментировать
  • Как создать проект qt gui с cmake?

    Profi_GMan
    @Profi_GMan Автор вопроса
    Не заметил важной детали, qt5_use_modules должно стоять после add_executable, всё заработало
    Ответ написан
    Комментировать