Задать вопрос
  • PyQt5 Как присвоить переменной текст из QLineEdit?

    @TriKrista
    QLineEdit не имеет функций setPlainText и toPlainText, используйте setText и text
    Ответ написан
    6 комментариев
  • Как прикрепить .so и .h к проекту Qt [qmake][.pro]?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    Хеадеры обязательны если хотите использовать либу в своей проге, что очевидно.
    Нужна либа, подключается через 'LIBS +=' в pro файле. А еще это все хорошо гуглится.
    Ответ написан
    6 комментариев
  • QT в Ubuntu: Как исправить ошибку? :-1: error: cannot find -lGL?

    @RPG
    Скорее всего у вас отсутствует пакет разработчика для библиотеки OpenGL. Установите пакет mesa-common-dev.

    sudo apt-get install mesa-common-dev
    sudo apt-get install freeglut3-dev


    P. S. Такой совет пригодится для любой библиотеки, когда что-то не линкуется.
    Ответ написан
    Комментировать
  • Как собрать библиотеку .lib [muParser]?

    @Mercury13
    Программист на «си с крестами» и не только
    Ну, раз уж решил пойти третьим путём (Как подкючить библиотеку [muParser] к Qt? ) — лови проект.

    Как вы видите, в большинстве случаев проект библиотеки строится тривиально: ищем, что надо включить в DEFINES, и затыкаем предупреждения.
    CONFIG -= qt
    
    TEMPLATE = lib
    CONFIG += staticlib
    
    CONFIG += c++11
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS MUPARSER_STATIC
    
    QMAKE_CXXFLAGS += -Wno-deprecated-copy -Wno-cast-function-type
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        src/muParser.cpp \
        src/muParserBase.cpp \
        src/muParserBytecode.cpp \
        src/muParserCallback.cpp \
        src/muParserError.cpp \
        src/muParserInt.cpp \
        src/muParserTest.cpp \
        src/muParserTokenReader.cpp
    
    HEADERS +=
    
    INCLUDEPATH += include


    (ВНИМАНИЕ! Я использую новейший MinGW из MSYS, он на две версии новее, и, возможно, некоторые из предупреждений, которые я заглушил, не нужны.)

    В программе придётся указать
    DEFINES += MUPARSER_STATIC
    
    INCLUDEPATH += ../MuParser/include
    
    LIBS += -L$$PWD -lmuparser


    Если что, в MSYS тоже есть MuParser, хотя он у меня не установлен.
    pacboy sync muparser:i muparser:x
    Ответ написан
    Комментировать
  • Книги по структурам данных и алгоритмам?

    В твоем случае - не стоит.

    Желание понять - "..основы - основ", imho тупиковый путь. Лучше ставь цели сделать, что-то простое и работающее. Сортировку, поиск, микро-игру, простой сайт и тп. Ищи такие мануалы, или по англицки getting started tutorial. Они есть для любой техноогии, хоть в тексте, хоть в видео.

    Ну и что с того, что ты запомнишь или будешь понимать, что "массив - это последовательно расположенная совокупность чего-то там..". Главное, что ты - можешь сделать!! А это очень быстро станет понятно, когда начнешь, что то делать по мануалам, хотя бы. Только не обнадеживайся, по мануалу - сделать все не составляет труда, даже для мартышки. А вот использовать мануал, как основу, для своего простенького проекта, это действительно - уже уровень программирования. Там, станут реальные задачи, и сразу станет понятно, насколько это твое. И уверяю тебя, знание основ базвых алгоритмов и базовых понятий, самая легкая задача в проекте.

    Для этого тебе всего-лишь надо, действительно, научиться гуглить ( научиться чувствовать, как искать нужную информацию ). Сама логика гугления - придумать пару ключевых слов ( вот тебе и массив ), и открыть первый десяток ссылок (вот тебе второй массив). Либо найдешь информацию, либо новые ключевые слова (вот тебе условие и сортировка ), тогда повторить (сам догадайся, что это..).

    И не учись в одиночку, а то увязнешь в дебрях. Программирование сейчас - социальная вещь. Ищи ментора, и соратников, чатся. Ходи на тусовки в своем городе и группах в ВК, правда не обнадеживайся, что ты кому-то будешь там важен и интересен. С отсутствием опыта и знаний, тебе предстоит тернистый путь. Читай правильные вещи, типа: tproger.ru

    Удачи.
    Ответ написан
    Комментировать
  • Как создать простой парсер математических выражений?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для создания своего парсера вам всё равно придётся изучить теорию. Начните с Книги фиолетового дракона, разберитесь в первых главах, постройте лексер на конечном автомате, составьте грамматику формул, которые хотите использовать, научитесь преобразовывать формулы из обычной записи в польскую.
    Почему именно польскую? Потому что практически она содержит программу, пошагово выполняемую компьютером для вычисления формулы.
    Ответ написан
    Комментировать
  • Как подключить стороннюю библиотеку к проекту Qt через CMake?

    @res2001
    Developer, ex-admin
    Конечно же в target_link_libraries, просто добавьте имя библиотеки в конце через пробел
    Но обычно используют find_package/find_library/pkg_check_modules для того, что бы предварительно определить установлена ли библиотека в системе. А в target_link_libraries добавляют переменные, которые инициализируются этими функциями.
    Смотрите: https://cmake.org/cmake/help/latest/genindex.html
    Ответ написан
    7 комментариев
  • Как правильно организовать модульный проект с использованием CMake?

    @4rtzel
    Поскольку CMake позволяет получить один и тот же результат кучей разный способов, то я постараюсь описать подход, который использовал бы я сам.
    Структура:
    packages_test
    ├── .git
    ├── cmake // Папка с доп. CMake скриптами если в этом есть необходимость
    ├── build // Результат сборки
    │   └─ res.exe // Исполняемый файл
    ├── CMakeLists.txt // Конфигурация сборки проекта
    ├── src
    │   ├─ main.cpp // Точка входа, main()
    │   └─ ...// Прочие файлы проекта
    ├── dependencies // Зависимости (подключаются через механизм submodule)
    │   ├─ vendor_package_0 // У каждой зависимости своя внутренняя организация
    │   └─ vendor_package_1
    └── test // Тесты
        ├── CMakeLists.txt
        └── src
            └── test_main.cpp

    Теперь, как мы будем добавлять зависимости? Это зависит от того где расположены библиотеки и как они собираются. В вашем случае, как я понимаю, все vendor_package_x представляют из себя CMake проекты с использованием add_library и получаемые из git submodule'ей. Это значит, что мы можем использовать add_subdirectory для импорта их target'ов.

    | Note: find_package чаще всего используется для поиска установленных в системе библиотек с помощью FindXXX.cmake скриптов

    Главный CMakeLists.txt:
    cmake_minimum_required(VERSION 3.0)
    project(playrix_project VERSION 1.0 LANGUAGES CXX)
    add_executable(playrix src/main.cpp)
    
    # Импортируем наши зависимости. Это не приводит к сборке, но просто позволяет нам использовать target'ы этих проектов.
    add_subdirectory(dependencies/vendor_package_0)
    add_subdirectory(dependencies/vendor_package_1)
    
    # Забудьте про include_directories и link_directories! В современном CMake следует использовать targets и properties.
    # Опредеяем зависимости нашего проекта
    target_link_libraries(playrix # Имя нашего executable'а
        PRIVATE # Определяет область видимости зависимостей для внешних проектов
            vendor_package_0_target # Настоящее имя target'а надо смотреть в vendor_package_0 CMakeLists.txt (add_library)
            vendor_package_1_target
    )

    target_link_libraries позаботится о том, чтобы собрать все зависимости, слинковать (если надо) их с нашим проектом и инклюднуть необходимые директории. Теперь можно собирать проект!

    Дополнительные ссылки:
    Ответ написан
    2 комментария
  • Как подключить qt к cmake?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Во-первых поставьте системную Qt (погуглилте как это в вашем линуксе сделать), для вас это будет намного проще, чем собрать Qt самостоятельно и сделать все то, что CLion написала вам в лог.
    Во-вторых CMakeLists должен быть примерно таким (ну инклюды там свои пропишите и пр.):
    cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
    
    project(Foo)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS} -std=c++1y")
    
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTORCC ON)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    
    find_package(Qt5Widgets REQUIRED)
    
    include_directories(${Qt5Widgets_INCLUDES})
    add_executable(Foo main.cpp)
    qt5_use_modules(Foo Widgets Core)

    Но зачем вам страдать с CLion, которая под разработку на Qt вообще не заточена? Не лучше ли взять нормальную IDE вроде QtCreator и не страдать?
    Ответ написан
    Комментировать
  • Как собрать библиотеку .lib [muParser]?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Так там же CMakeLists.txt в корне есть. Что-то вроде "mkdir build && cd build && cmake .. && make" (виндовый аналог этого) не работает?
    Ответ написан
    Комментировать
  • Как подключить библиотеку dll в QtCreator?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Если имеется ввиду qmake (*.pro файл), то:
    LIBS *= "path_to_dll"
    INCLUDEPATH *= "path_to_headers"

    Ну а в коде просто иклюдить как обычно после этого.

    С CMake проектами будет иначе. К слову, скоро Qt официально перейдёт на CMake.
    Ответ написан
    23 комментария
  • Чем отличается динамическая библиотека от статической?

    Статическая библиотека это фактически архив объектных файлов, который используется в процессе статической линковки. В результате статической линковки из многих объектных файлов получается один исполняемый, запускается статическая линковка в момент создания исполняемого файла.

    Динамическая библиотека это фактически исполняемый файл (т.е. DLL и EXE в Windows имеют одинаковый формат). Динамическая линковка запускается в момент создания процесса (когда вы запускаете исполняемый файл на выполнение), линкуются между собой несколько исполняемых файлов каждый раз, когда создается новый процесс. Так же возможна динамическая линковка уже после запуска, т.е. новая библиотека может быть подгружена в адресное пространство ужа работающего процесса.

    Сделать из статической библиотеки динамическую в принципе можно - необходимо ее (статически) слинковать в динамическую библиотеку, при этом будет создана динамическая библиотека и статическая стаб-библиотека, которую можно использовать в проекте вместо статической библиотеки, чтобы вызывать функции из динамической библиотеки.
    Ответ написан
    9 комментариев
  • Qt. Как создать с инициализацией объект класса с членами-объектами на стеке?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    А вы не создавайте их на стеке ;)
    Ответ написан
    Комментировать
  • Как удалить Qt Creater который был установлен через ран?

    Kiberchief
    @Kiberchief Автор вопроса
    Пока учусь.
    Мне не кто не дал нормального ответа на мой вопрос, хорошо что я смог разобраться сам.И так парни если у вас возникла такая же проблема как у меня, вам нужно зайти в в папку где находиться Qt в моем случае путь к папке был такой cd /home/name/Qt, после того как вы зашли в эту папку пропишите ./MaintenanceTool.Вам выведет окно с помощью которого вы сможете удалить Qt с вашего пк (Этот способ работает только в том случае если вы установили Qt Creater через .run).
    А если вы установили его через консоль не через .run тогда вам помогут эти команды:
    Удалить только qtcreator
    sudo apt-get удалить qtcreator
    Удалить qtcreator и его зависимости
    sudo apt-get remove --auto-remove qtcreator
    Очистка вашей конфигурации / данных
    Если вы также захотите удалить локальные / конфигурационные файлы для qtcreator, тогда это будет работать.
    Внимание! данные не могут быть восстановлены путем переустановки пакета.
    sudo apt-get purge qtcreator
    Или аналогично, как этот qtcreator
    sudo apt-get purge --auto-remove qtcreator
    Ответ написан
    3 комментария
  • Как подкючить библиотеку [muParser] к Qt?

    @Mercury13
    Программист на «си с крестами» и не только
    Тут есть несколько вариантов.
    1. Собрать *.a (любым подходящим методом), закинуть h-файлы в каталог include компилятора, *.a в каталог lib компилятора. В проекте добавить LIBS += -lmuparser.
    2. Закинуть исходный текст библиотеки куда-то в проект, добавить *.cpp (возможно, не все) в этот самый проект. Чтобы удобнее было подключать файлы, прописать INCLUDEPATH += muparser/include
    3. Промежуточный вариант — собрать *.a, закинуть его и *.h куда-то в проект. В проект добавить LIBS += -L$$PWD -lmuparser, INCLUDEPATH += muparser/include
    4. Собрать пакет для Qt. Как — не знаю.

    Когда каким методом пользуюсь.
    1. Только если библиотека есть в дистрибутиве MSYS.
    2. В подавляющем большинстве случаев.
    3. Иногда, особенно если библиотека большая. Ну и если авторы предлагают «официальную» DLL’ку — предварительно собрав, например, через Dependency Walker + DllTool подходящий *.a и заверсионировав его. (В больших проектах не обойтись без линкера LLD, но он, в отличие от LD, не подхватывает *.DLL, надо создавать файл библиотеки.)
    4. Если есть «официальный» пакет. Одна такая библиотека — QWT.
    Ответ написан
    1 комментарий
  • Есть ли в Qt парсер математических выражений?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Если прям совсем вот парсер, то нет. А если их надо просто вычислять, то да: https://doc.qt.io/qt-5/qjsengine.html
    Ответ написан
    Комментировать
  • Есть ли в Qt парсер математических выражений?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    Можно математические выражения отправлять в QtScript и получать результат.
    Ответ написан
    Комментировать
  • Математика для машинного обучения и нейронных сетей при школьной базе знаний?

    sgjurano
    @sgjurano
    Разработчик
    Программа:
    https://download.cdn.yandex.net/shad/shad_program_...

    В моём случае это выглядит примерно вот так:
    5efa13a2e5744a66a924206792e9e470.jpg

    PS: главное понимать, что познание - это процесс, если вам каких-то знаний не хватает, то их всегда можно наверстать, но это требует времени, и чем меньше вы знаете, тем больше времени требуется. Два года назад я знал математику на уровне 6 класса школы, сейчас учусь в ШАД на 2 курсе и читаю Deep Learning Book (хотя местами и приходится копаться в учебниках).

    PPS: при погружении в какую-нибудь область, первая прочитанная книга становится оглавлением к этой области знаний и углубляться дальше ты будешь уже базируясь на ней, поэтому книги накапливаются, далеко не всегда они читаются от корки до корки.
    Ответ написан
    14 комментариев
  • Стоит ли изучать СИ?

    @res2001
    Developer, ex-admin
    Вопрос используется ли вообще язык СИ где то в проектах?

    Странный вопрос. Возьмите любой проект где требуется скорость/низкое потребление памяти там будет Си.
    Список популярных репозиториев на Си на гитхабе за последний месяц: https://github.com/trending/c?since=monthly
    Ответ написан
    Комментировать