• Как подключить glut в Dev ccp при 64-разрядной windows7?

    EXL
    @EXL
    Энтузиаст
    Давайте рассмотрим ваш вопрос внимательнее.

    Во-первых, вы пользуесь достаточно устаревшими инструментами. Это в первую очередь касается Dev-Cpp и библиотеки GLUT.

    Во-вторых, скорее всего вы скачали библиотеку GLUT для Windows под компилятор MSVC++, тогда как в Dev-Cpp используется компилятор gcc из комплекта MinGW. Отсюда ничего и не работает.

    Советую вам воспользоваться современными средствами разработки, например MS Visual Studio или Qt Creator (по ссылке официальный Bundle, включающий в себя всё необходимое для разработки приложений под Windows).

    Кроме этого, вместо GLUT, лучше всего использовать современную библиотеку freeglut.

    Если вы выберете Qt Creator, то я вам скомпилирую freeglut под Windows 7 64-bit и расскажу, как настроить и запустить проект, чтобы всё работало. Стучите в контакты в профиле.
    Ответ написан
    Комментировать
  • Что означает данная информация?

    EXL
    @EXL
    Энтузиаст
    Маша, не беспокойтесь, вы видимо что-то нажали и попали в Chrome Developers Tools (инструменты для Web-разработчиков), позволяющие отследить время загрузки и потребляемую память того или иного элемента на текущей Web-страничке. Вам, как пользователю, эта информация совершенно бесполезна.
    Ответ написан
    Комментировать
  • Как заставить SDL2_mixer воспроизводить mp3-формат?

    EXL
    @EXL
    Энтузиаст
    Почему используете smpeg, а не libmad? Попробуйте собрать SDL2_mixer так, чтобы декодером был именно mad. Не знаю, как в SDL2_mixer, но в SDL_mixer собрать с libmad можно было как-то так.
    Ответ написан
  • Git, красивое отображение репозитория и коммитов, есть ли что-нибудь?

    EXL
    @EXL
    Энтузиаст
    Для презентаций и визуальной оценки вклада каждого разработчика замечательно подходит gource.

    habrahabr.ru/post/75780

    Установка и использование gource в Debian-based дистрибутивах тривиально:
    sudo apt-get install gource
    cd ~/My_cool_git_repo
    gource
    Ответ написан
    1 комментарий
  • Как вызвать метод основного класса из другого класса?

    EXL
    @EXL
    Энтузиаст
    Вы снова не изучив базу C++ и документацию по Qt стараетесь решить поставленную задачу с наскока. Язык программирования C++ это не тот язык, где можно использовать такой подход. Вы либо твёрдо знаете основы, либо не знаете совсем ничего.

    Вам необходимо воспользоваться обменом данными между классами. Это можно сделать различными способами: геттеры-сеттеры, двойное наследование, передача указателя, система сигналов-слотов, общий класс для обмена данными, статические методы и т. д.

    Примеров в интернете можно найти множество:
    easy-qt.blogspot.ru/2012/10/1.html
    www.cyberforum.ru/qt/thread548059.html
    fkn.ktu10.com/?q=node/3021
    www.prog.org.ru/topic_19557_0.html

    И ещё у вас достаточно странный подход. Форма должна опрашивать логический класс, а не наоборот. То есть ваш не_GUI-класс ничего не должен содержать и дёргать Qt'шного. Вдруг его придётся выносить в отдельную библиотеку, никак не относящуюся к GUI и Qt?

    Настоятельно рекомендую посмотреть примеры приложений, идущие с Qt. Там вы найдёте все ответы на свои вопросы и методы построения правильной архитектуры приложения.
    Ответ написан
    2 комментария
  • Есть ли простой способ добавить в Qt-приложение возможность шифровать/расшифровывать строку методом AES?

    EXL
    @EXL
    Энтузиаст
    Ещё можно посмотреть QCA.

    И вот такой код на StackOverflow, с использованием Crypto++.

    Но правда, это всё громоздкие решения. Поэтому только собственные костыли либо выдирание необходимых файлов из библиотек, что не есть гуд.
    Ответ написан
  • Как использовать интерфейс (ui) в созданном заголовочном файле?

    EXL
    @EXL
    Энтузиаст
    Если вам нужны динамические диалоги, то можно сделать так:

    QUiLoader uiLoader;
    QFile file("sortdialog.ui");
    QWidget *sortDialog = uiLoader.load(&file);
    if (sortDialog) {
        ....
    }

    Источник.

    Но скорее всего вам нужно просто создать форму с классом. Для этого в Qt Creator выбираете "File" -> "New File or Project" -> "Qt" -> "Qt Designer Form Class".

    При желании в новый файл формы *.ui можно скопировать содержимое из старого (или вообще перезаписать его вашим старым *.ui). Всё будет работать.

    А если вам нужно зафиксировать изменения в форме из внешнего класса, то всегда можно воспользоваться указателем:

    TestClass.h:
    #ifndef TESTCLASS_H
    #define TESTCLASS_H
    
    #include "ui_MainWindow.h"
    
    class TestClass
    {
    public:
        TestClass();
        void changeTextOnForm(Ui_MainWindow *mainWindow);
    };
    
    #endif // TESTCLASS_H

    TestClass.cpp:
    #include "TestClass.h"
    
    TestClass::TestClass()
    {
    }
    
    void TestClass::changeTextOnForm(Ui_MainWindow *mainWindow)
    {
        mainWindow->label_2->setText(QString("Text from ") + Q_FUNC_INFO);
        mainWindow->textBrowser->append(mainWindow->label_2->text());
    }

    MainWindow.cpp:
    ...
    void MainWindow::on_pushButton_clicked()
    {
        TestClass testClass;
        testClass.changeTextOnForm(this->ui);
    }
    ...
    Ответ написан
  • Какой алгоритм использовать для генерации чисел?

    EXL
    @EXL
    Энтузиаст
    Например.

    А если вам нужен простенький генератор, можете использовать что-нибудь вроде:

    double Rand(double fMin, double fMax)
    {
        double f = (double)rand() / RAND_MAX;
        return fMin + f * (fMax - fMin);
    }
    Ответ написан
    Комментировать
  • Что делать с ошибкой undefined reference to при передаче параметра в функцию?

    EXL
    @EXL
    Энтузиаст
    Часть кода separate_image выглядит следующим образом:
    void separateImage(char* path_to_image)
    {
        ...
    }

    А нужно:
    void MainWindow::separateImage(char* path_to_image)
    {
        ...
    }

    Так как separateImage() вы объявили как приватный метод класса MainWindow.
    Внимательно читаем документацию на Qt и учебник по языку C++.
    Ответ написан
    1 комментарий
  • Есть ли полноценные IDE для Android, и если нет, то почему ?

    EXL
    @EXL
    Энтузиаст
    Android Studio
    Eclipse

    Куда уж полноценнее - не знаю. Или вы про IDE на самих Android-устройствах? Они есть, но низкого качества. Почему? Да потому что набирать код или формошлёпить на подобных устройствах (планшетах/телефонах) достаточно проблематично.
    Ответ написан
  • Как выловить ошибку в приложении QT?

    EXL
    @EXL
    Энтузиаст
    На 2 компьютерах(windows 7 и 8) с установленной QT все работает. При запуске на компьютерах без QT программа падает.

    Читать документацию. Вы неправильно разворачиваете своё приложение в средах Windows:
    Как развернуть(deployment) Qt приложение на windows?
    https://qt-project.org/doc/qt-5/windows-deployment...
    Ответ написан
    Комментировать
  • Как подключить autotools библиотеку к qmake проекту?

    EXL
    @EXL
    Энтузиаст
    Лучше всего будет переехать с системы сборки autotools на QMake/QBS. Я делал это таким образом:
    Для каждой платформы сконфигурировал библиотеку, сохранив файлы "config.h". Затем на каждой платформе собрал библиотеку, сохранив лог сборки в файл: make &> make.log На основе полученных данных и файлов ручками написал платформонезависимый "*.pro"-файл, полностью интегрировав библиотеку в проект и избавившись от монструозного autotools. На это ушло приблизительно 1.5-часа, в библиотеке было приблизительно 50 "*.c" и "*.h"-файлов.
    Ответ написан
  • Как сделать border в тексте QLabel?

    EXL
    @EXL
    Энтузиаст
    Если вам нужно выделить контур самого QLabel'а, то можно просто воспользоваться Qt Style Sheets (QSS):

    vaw5jdE.png
    ui->label->setStyleSheet("QLabel {"
                                 "border-style: solid;"
                                 "border-width: 1px;"
                                 "border-color: black; "
                                 "}");

    Если необходимо выделить контур именно текста, то может помочь Shadow Effect:

    FEZVbrJ.png
    QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(this);
    effect->setOffset(-1, -1);
    effect->setColor(Qt::yellow);
    ui->label->setGraphicsEffect(effect);


    Контур текста с размытием:

    vAuWBUn.png
    QGraphicsDropShadowEffect *eff = new QGraphicsDropShadowEffect(this);
    eff->setOffset(0, 0);
    eff->setBlurRadius(5.0);
    eff->setColor(Qt::red);
    ui->label->setGraphicsEffect(eff);


    Обводка текста с помощью перегруженного метода paintEvent():

    nDejj4M.png
    void Widget::paintEvent(QPaintEvent *)
    {
        int off = 10;
        QPainter painter(this);
        QPainterPath path;
        QFont drawFont("Sans", 20);
        path.addText(off, drawFont.pointSize() + off, drawFont, text());
        painter.setRenderHints(QPainter::Antialiasing);
        painter.strokePath(path, QPen(QColor("#FF8C00"), 4));
        painter.fillPath(path, QBrush(Qt::black));
        resize(path.boundingRect().size().toSize().width() + off * 2, path.boundingRect().size().toSize().height() + off * 2);
    }
    Ответ написан
    Комментировать
  • Существует ли готовая универсальная GUI-обертка для консольных программ?

    EXL
    @EXL
    Энтузиаст
    Обратите внимание на связку Tcl/Tk, одна из областей применения этой связки — создание графических интерфейсов для консольных программ (пакетов программ). Насколько мне известно, Tcl/Tk использует в своей поставке популярнейшая консольная утилита Git. Думаю код из примеров поможет вам справиться с вашей задачей.
    Ответ написан
    Комментировать
  • Как поменять "стартовый" коммит ветки git-репозитария?

    EXL
    @EXL
    Энтузиаст
    была смена окончаний строк, "решать" надо все файлы целиком
    А что если попробовать на коммите "EEE" ветки "test" сделать коммит "FFF", который по своей сути будет "Fix CRLF to LF" то есть содержать просто конвертацию строк кода проекта в LF. А потом соответственно попытаться слить ветки "test" и "develop" снова? Тогда конфликтов с окончаниями строк быть не должно.
    Ответ написан
    Комментировать
  • Какая среда разработки наподобие JetBrains под win?

    EXL
    @EXL
    Энтузиаст
    Такой программы пока нету, но JetBrains готовят свою IDE для C++; если мне не изменяет память, называться она будет cppide. Однако, насколько мне известно, никаких визуальных средств для построения интерфейсов на начальном этапе реализовано там не будет. А доминирующей системой сборки будет CMake.

    habrahabr.ru/company/JetBrains/blog/212115
    habrahabr.ru/post/175297

    программирую в QT
    Простите, в Qt Creator?
    мол там софт анализирует твой код и подсказывает как писать верней
    Эх, уже даже такие штуки появились. А раньше как-то вообще писали код без подсветки синтаксиса и автодополнения и не парились. Всё-таки как же быстро развиваются технологии.
    Ответ написан
    3 комментария
  • На каком языке-фреймворке легче написать кроссплатформенное gui-приложение?

    EXL
    @EXL
    Энтузиаст
    Qt можно статически собрать и получить один исполняемый файл размером 3-7 МБ в зависимости от сложности приложения. По-крайней мере с Qt4 было именно так. Увы, но Qt5 потянул за собой жирную libicu весом в 36 МБ (что больше чем весь Qt).

    А в сторону GTK+/wxWidgets вы не смотрели?
    Ответ написан
    Комментировать
  • Какой метод указывает QWidget не исчезать после отображения методом show() ?

    EXL
    @EXL
    Энтузиаст
    Вы что-то делаете неправильно.
    В данном случае вы создаёте объект класса OptionApp на стеке, это значит что после выхода из функции он будет разрушен. Исправьте на

    OptionApp *optionDialog = new OptionApp(this);
    optionDialog->show();

    И не забудьте в конструкторе класса виджета этого окна вызвать:

    setAttribute(Qt::WA_DeleteOnClose);
    Чтобы избежать утечки памяти.

    Это если вам нужен не модальный диалог. В противном случае просто воспользуйтесь
    методом:
    OptionDialog.exec();
    Ответ написан
  • Как сделать "ИЛИ" в Construct 2?

    EXL
    @EXL
    Энтузиаст
    Я не знаю, что такое construct 2, но сделал бы как-то так:

    exl@exl-Lenovo-G560e:~/Projects/genobj > cat main.cpp 
    #include <iostream>
    #include <cstdlib>
    
    int main()
    {
        srand(time(0));
        std::cout << ((rand() % 2) ? "Object #1" : "Object #2") << std::endl;
        return 0;
    }
    exl@exl-Lenovo-G560e:~/Projects/genobj > g++ main.cpp
    exl@exl-Lenovo-G560e:~/Projects/genobj > for ((a=0; a < 10; a++)) do ./a.out; sleep 3; done
    Object #2
    Object #1
    Object #2
    Object #2
    Object #1
    Object #1
    Object #1
    Object #2
    Object #2
    Object #1

    То есть смотрите в сторону random number generation в construct 2.
    Ответ написан
    Комментировать
  • Как объединить строки и присвоить значение переменной в классе?

    EXL
    @EXL
    Энтузиаст
    Простите, а в чём проблема? В зависимости от ситуации можете использовать как С++-подход:
    Tampler()
    {
            std::string str(GetCurrentDir());
            str = str + filename + TLDR_EXT;
            m_sMyString = strdup(str.c_str());
    }
    Так и C-подход:
    Tampler()
    {
            char *tempstr = (char *)malloc(strlen(GetCurrentDir()) + strlen(filename) + strlen(TLDR_EXT) + 1);
            strcpy(tempstr, GetCurrentDir());
            strcat(tempstr, filename);
            strcat(tempstr, TLDR_EXT);
            m_sMyString = tempstr;
    }

    Если я, конечно, правильно вас понял.
    Ответ написан