М
МишаЖел. 4, 2017, 10:15 Т.Ж.

Как динамической библиотеки использовать переменные класса?

динамическая библиот, QLibrary

Здравствуйте.

У меня есть динамическая библиотека с функцией
void StrategyCod2()
{
    qDebug()<<"Library work2"<<NBar;
}
где NBar - это переменная класса MainWindow основного приложения, вызывающего динамическую библиотеку.
Скажите пожалуйста как функции StrategyCod2() заставить выдавать переменную NBar?
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

43
Evgenii Legotckoi
  • Жел. 4, 2017, 4 Т.Қ.

День добрый!
Нужно инстанцировать класс. То есть без созданного объекта класса вы не сможете использовать методы этого класса.

    М
    • Жел. 5, 2017, 2:26 Т.Ж.

    Но как это сделать в динамической библиотеке? Наверно нужно указать ссылку на хедер класса?

      М
      • Жел. 5, 2017, 2:45 Т.Ж.

      Добавил в библиотеку

      #include <C:\\Qt\project\\MyCandleSrick\\mainwindow.h>
      Выдало ошибку на первом же инклуде проекта.
        Evgenii Legotckoi
        • Жел. 5, 2017, 4:24 Т.Қ.

        А вот теперь мы плавно подобрались к нормальному подключению библиотек.
        Для начала смотрим как подключаются предкомпилированные библиотеки на примере статьи о подключении boost . Подробнее посмотрите часть, где описывается QtBoostHello.pro .

        Также смотрите как нормально подключить библиотеку в официальной документации . Там даже скриншоты есть.
          М
          • Жел. 6, 2017, 12:55 Т.Ж.

          Но мне нужна динамическая библиотека для изменения кода библиотеки и последующего подключения. Моя библиотека компилируется и работает, если многого от нее не хотеть.

          На сайте QT описан такой вариант, у меня он работает
             QLibrary MyLib("C:\\Qt\\project\\build-StrategyCod-Desktop_Qt_5_9_2_MinGW_32bit-Debug\\debug\\StrategyCod");  //путь к библиотеке
              MyLib.load();//чтение
              typedef void (*MyPrototype)();
              MyPrototype StrategyCod = (MyPrototype) MyLib.resolve("StrategyCod");
              StrategyCod();  //вызов стратегии из библиотеки
              MyLib.unload();//отключение библиотеки

            М
            • Жел. 6, 2017, 1:17 Т.Ж.

            тут проект библиотеки

              Evgenii Legotckoi
              • Жел. 6, 2017, 2:53 Т.Ж.

              Попробуйте тогда переписать инклюд ещё раз. Только таким образом.

              #include <C:/Qt/project/MyCandleSrick/mainwindow.h>
              Ну и ещё один момент. Если у вас в проекте два заголовочника с одинаковыми именами, а там классы с иденаковыми именами, как и в главном проекте, то ошибки нужно разруливать на уровне namespace .

              А вообще, когда говорите, что инклюд не работает, то приводите ошибку, которую выдаёт компилятор. Я не экстрасенс, чтобы догадываться, что именно у вас там пошло не так.
                М
                • Жел. 6, 2017, 2:59 Т.Ж.

                Когда я прописал INCLUDEPATH = "C:/Qt/project/MyCandleSrick" "C:/Qt/Qt5.9.2/5.9.2/Src/qtbase/include/QtWidgets" с инклудом трудности закончились.

                Когда  функцию написал так
                void StrategyCod(/*MainWinow * main*/)
                {
                    MainWindow w;
                    qDebug()<<"Library work2"<<w.NBar;
                }
                Выдало ошибки :
                C:\Qt\project\StrategyCod\strategycod.cpp:11: ошибка: undefined reference to `MainWindow::MainWindow(QWidget*)'
                C:\Qt\project\StrategyCod\strategycod.cpp:11: ошибка: undefined reference to `MainWindow::~MainWindow()'
                C:\Qt\project\StrategyCod\strategycod.cpp:11: ошибка: undefined reference to `MainWindow::~MainWindow()'
                collect2.exe:-1: ошибка: error: ld returned 1 exit status
                11 строчка: MainWindow w;
                  М
                  • Жел. 6, 2017, 3:07 Т.Ж.
                  Сделал так в хедере 
                  extern "C" {STRATEGYCODSHARED_EXPORT void StrategyCod(MainWindow * main);}
                  А так в *.срр
                  void StrategyCod(MainWindow * main)
                  {
                      //MainWindow w;
                      main->NBar;
                      qDebug()<<"Library work2"<<main->NBar;//<<w.NBar;
                  }
                  Вот только возвращает число не NBar не правильное выводит.
                    Evgenii Legotckoi
                    • Жел. 6, 2017, 3:14 Т.Ж.
                    • (өңделген)

                    Зря передаёте объект окна для расчёта. Нужно передавать набор информации. Вектор значений, все эти текущие NBar, которые уже должны быть в вашем окне. Вообще, передавать объект главного окна приложения для математических расчётов это дурной тон, что ведёт к тому, что проект становится неподдерживаемым и трудночитаемым. Вы подменяете сущности и понятия своими действиями, обычно такой код без сожаления удаляют и переписывают с нуля, вместо того, чтобы разбираться, что там написано.


                    Если бы вы передавали неконстантные ссылки на NBar и, например, возвращали бы этой функцией результат расчёта, то было бы гораздо адекватнее. неконстантны ссылки позволяют делать изменения значений.
                      М
                      • Жел. 6, 2017, 3:33 Т.Ж.

                      Скажите пожалуйста, как правильно сделать ссылку, так не работает

                      void StrategyCod(/*MainWindow * main*/)
                      {
                          long long &NBar1 =MainWindow.NBar;
                          qDebug()<<"Library work2";//<<w.NBar;
                      }
                        Evgenii Legotckoi
                        • Жел. 6, 2017, 3:40 Т.Ж.
                        • (өңделген)

                        я бы так переписал сам метод в стратегии

                        void StrategyCod(long long &NBar)
                        {
                            qDebug()<<"Library work2" << NBar1;
                        }
                        А там уже, где вы задаете этот параметр, вызвал бы этот метод передавая ссылку на nbar
                        void someMethodInMainProgram()
                        {
                            // Например, если имеете переменную NBar
                            StrategyCod(m_NBar); 
                        }
                          М
                          • Жел. 6, 2017, 3:44 Т.Ж.

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

                          И еще этот код должен менять около 10 переменных и векторов класса, по окончанию расчетов.
                            Evgenii Legotckoi
                            • Жел. 6, 2017, 3:52 Т.Ж.
                            • (өңделген)

                            Этот будет читабельно, если сделать специальную структуру данных, которая будет передаваться для расчёта и содержать необходимые значения.

                            struct StrategyData
                            {
                                long long NBar;
                                // и т.д.
                            }
                            В главном окне приложения можно сделать метод, который будет подготавливать эти значения.

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

                            А также то, что вы делаете передачу объекта GUI в библиотеку уже делает бессмысленным сам факт того, что вы вынесли стратегию в отдельную библиотеку.
                              М
                              • Жел. 6, 2017, 3:58 Т.Ж.

                              Смысл есть. Данные для расчетов долго грузятся из файла. Проще изменить расчет перегрузить библиотеку и пересчитать, нежели все тоже проделывать с приложением. Если бы данные грузились быстрее, тогда конечно, бессмысленно .

                              Но как быть с возвратом данных? тоже через структуру? может быть все же есть способ изменить данные класса?
                                Evgenii Legotckoi
                                • Жел. 6, 2017, 4:15 Т.Ж.
                                • (өңделген)

                                Вы что, при каждом вызове стратегии считываете данные из файла? Сохраняйте в памяти приложения загруженные данные. Отсылайте их на расчёт, получайте результат. Не понравилось, изменить установки, заново отошлите на расчёт. При этом если данные уже считаны, то не нужно второй раз загружать с файла. Если передаётся объект по ссылке, то объект не копируется, а поэтому все изменения проделываются в объекте, который находится в окне приложения.


                                Вообще бред говорите по поводу приложения. Посылать целое окно приложения просто потому, что вы не знаете языка программирования настолько, чтобы написать адекватный вариант работы с данными... Меня бы за такие решения после второй недели испытательного срока уволили бы.
                                  М
                                  • Жел. 6, 2017, 4:24 Т.Ж.

                                  Установки расчета изменить не достаточно, нужно менять код(он может растягиваться на более 300 строк и порой менять его нужно весьма серьезно). А просто так изменить код в работающем приложении на С++ нельзя. Поэтому и нужна библиотека. Данный считываются только раз, или в дальнейшем при необходимости.

                                  Я знаю что ссылка меняет объект, потому и хочу пользоваться ссылкой.  Можно ли как-то сделать ссылки на объекты класса?
                                    Evgenii Legotckoi
                                    • Жел. 6, 2017, 4:30 Т.Ж.

                                    300 строк? ))) это мелочь... это просто ни о чём... вообще ни о чём. в ряде случаев это всего лишь час работы...
                                    Ваши данные и установки не изменяются, стандартизация данных для расчётов полностью решает многие надуманные вами проблемы.


                                    Ссылка на объект некоторого класса делается также, как и на стандартные типы данных.

                                    И я не буду подсказывать Вам, как передать окно приложения в стороннюю библиотеку, это бред, мои профессиональные компетенции не позволяют мне советовать решения проблемы для заведомо неправильной архитектуры приложения. Пользовательский интерфейс и данные - это разные сущности. И они должны быть отделены друг от друга.
                                      М
                                      • Жел. 6, 2017, 5:02 Т.Ж.

                                      Это могут быть сильно различные 300 строк. И заранее описать трудно, т.к. мысли приходят в процессе работы.

                                      Если ссылка делается так
                                      int q1=5;
                                      int &q2=q1;
                                      то если пишу ссылку на объект класса
                                      long long &NBar1 =MainWindow.NBar;
                                      выдает ошибку C:\Qt\project\StrategyCod\strategycod.cpp:14: ошибка: expected primary-expression before '.' token
                                      long long &NBar1 =MainWindow.NBar;
                                      Скажите пожалуйста, как правильно это написать?
                                        Evgenii Legotckoi
                                        • Жел. 6, 2017, 5:10 Т.Ж.
                                        Это могут быть сильно различные 300 строк. И заранее описать трудно, т.к. мысли приходят в процессе работы.
                                        Для этого есть этап рефакторинга, во время которого обобщаются методы и сущности. Но и при прототипировании проекта нужно думать наперёд. К сожалению это приходит с опытом, но это не значит, что не нужно пытаться делать этого.

                                        long long &NBar1 =MainWindow.NBar;
                                        Класс нужно инстанцировать... У вас не создан объект класса, а поэтому вы не можете использовать объект из него. Он просто не существует.
                                          М
                                          • Жел. 6, 2017, 5:14 Т.Ж.

                                          Не могу создать объект класса. Если делаю так

                                          void StrategyCod(double Parametr)/*MainWindow * main*/
                                          {
                                              MainWindow w;
                                              long long &NBar1 =w.NBar;
                                              qDebug()<<"Library work2";//<<w.NBar;
                                          }
                                          То появляются ошибки:
                                          C:\Qt\project\StrategyCod\strategycod.cpp:11: ошибка: undefined reference to `MainWindow::MainWindow(QWidget*)'
                                          C:\Qt\project\StrategyCod\strategycod.cpp:11: ошибка: undefined reference to `MainWindow::~MainWindow()'
                                          C:\Qt\project\StrategyCod\strategycod.cpp:11: ошибка: undefined reference to `MainWindow::~MainWindow()'
                                          collect2.exe:-1: ошибка: error: ld returned 1 exit status
                                          11 строчка : MainWindow w;
                                            Evgenii Legotckoi
                                            • Жел. 6, 2017, 5:19 Т.Ж.

                                            Нужно подключить заголовочный файл этого MainWindow в код, где хотите инстанцировать.
                                            Вот только у меня такое подозрение, что у вас этот самый MainWindow - это и есть приложение...

                                            Получается, что ваша библиотека со стратегией имеет зависимость от главного приложения, а приложение зависит от библиотеки... Замкнутый круг получается )))) Тут что-то одно должно зависеть от другого... иерархия зависимостей библиотек может быть только древовидной... (опустим ромбовидное наследование и т.д.)

                                            Используйте структуру данных ))) хотя бы попытайтесь...
                                              М
                                              • Жел. 6, 2017, 5:29 Т.Ж.
                                              #include "mainwindow.h" подключен, но ошибки остаются.
                                              По моей задумке оно было все взаимосвязанно.
                                              Структура данных наверно поможет, но это будет то же самое, только больше времени потребуется на передачу данных и немного больше возни с кодом. Если доделать ссылки, это все упростит.
                                              Скажите пожалуйста, как все же создать объект класса и заставить работать ссылки?
                                                Evgenii Legotckoi
                                                • Жел. 6, 2017, 5:47 Т.Ж.

                                                Ваша задумка страшна, как атомная война ))) ну серьёзно ))

                                                Посылать GUI в библиотеку, которая работает исключительно с данными... никто так софт не разрабатывает в серьёзных компаниях, такое просто не проходит код ревью.
                                                По поводу больше времени - вы пробовали делать прототип и измерение времени? - нет, не делали.
                                                Больше возни с кодом - вообще не аргумент. Вы и так потратили кучу времени на заведомо неадекватное решение с точки зрения разработки архитектуры программы.
                                                  М
                                                  • Жел. 6, 2017, 6:02 Т.Ж.

                                                  Я добавил в функцию один аргумент

                                                  void StrategyCod(double Parametr)/*MainWindow * main*/
                                                  {
                                                      qDebug()<<"Library work2"<<Parametr;//<<w.NBar;
                                                  }
                                                  Но при вызове не могу его указать. Если пишу так
                                                  QLibrary MyLib("C:\\Qt\\project\\build-StrategyCod-Desktop_Qt_5_9_2_MinGW_32bit-Debug\\debug\\StrategyCod");  //путь к библиотеке
                                                      MyLib.load();//чтение
                                                      typedef void (*MyPrototype)();
                                                      MyPrototype StrategyCod = (MyPrototype) MyLib.resolve("StrategyCod");
                                                      StrategyCod(25);  //вызов стратегии из библиотеки
                                                      MyLib.unload();//отключение библиотеки
                                                  То выдает ошибку  C:\Qt\project\MyCandleSrick\main.cpp:38: ошибка: too many arguments to function
                                                  StrategyCod(25);  //вызов стратегии РёР· библиотеки
                                                  ^
                                                  строка 38 :StrategyCod(25);
                                                    Evgenii Legotckoi
                                                    • Жел. 6, 2017, 6:06 Т.Ж.

                                                    Ну а прототип функции кто будет правильно описывать за вас?

                                                    typedef void (*MyPrototype)(double);
                                                      М
                                                      • Жел. 6, 2017, 6:11 Т.Ж.

                                                      Спасибо, заработало.

                                                      Раз ссылки не работают, то после вычислений в функции стоит создавать структуру и делать ее возвращение,а в приложении создавать такую же структуру и выводить в нее возвращаемые результаты функции? а уже из этой структуры выводить значения в переменные и векторы класса?

                                                        Evgenii Legotckoi
                                                        • Жел. 6, 2017, 6:16 Т.Ж.

                                                        Вообще, по хорошему, у вас должна быть возможность подключить заголовочный файл библиотеки, в котором будет объявлена структура со всеми полями. В приложении создаёте структуру и посылаете ссылку на неё в библиотеку. Библиотека всё считает и изменяет поля структуры. Даже возвращать ничего не нужно.

                                                          М
                                                          • Жел. 6, 2017, 6:52 Т.Ж.

                                                          Но тогда какая разница, почему не сделать ссылку на класс?

                                                          Я сделал структуру в main.cpp
                                                             struct Test1
                                                              {
                                                                int q1;
                                                                int q2;
                                                              };
                                                              Test1 Struct1; Struct1.q1=12; Struct1.q2=14;
                                                          В библиотеке сделал так:
                                                          #include "strategycod.h"
                                                          #include <QDebug>
                                                          #include "mainwindow.h"
                                                          #include "main.cpp"
                                                          void StrategyCod(double Parametr)
                                                          {
                                                              struct &name=Struct1;
                                                              qDebug()<<"Library work2"<<Parametr;//<<w.NBar;
                                                          }
                                                          Но ссылку сделать не удается, в библиотеке нет знания Test1 и  Struct1

                                                            Evgenii Legotckoi
                                                            • Жел. 6, 2017, 7:01 Т.Ж.
                                                            #include "main.cpp"
                                                            Внутри файла исходных кодов библиотеки? Простите, вы вообще в своём уме?

                                                            #include "mainwindow.h"
                                                            А это главное окно приложения, и опять библиотека зависит от главного приложения.

                                                            НЕ МОЖЕТ БИБЛИОТЕКА ИМЕТЬ ЗАВИСИМОСТЬ ОТ ГЛАВНОГО ПРИЛОЖЕНИЯ НИКОГДА!!!

                                                            Я распинаюсь битый час, чтобы донести до вас эту мысль, а вам что в лоб, что по лбу.
                                                              М
                                                              • Жел. 6, 2017, 7:10 Т.Ж.

                                                              Да я для примера беру эти файлы.

                                                              Создал файл в проекте test1.h , в нем написал
                                                              #ifndef TEST1_H
                                                              #define TEST1_H
                                                              struct Test1
                                                                  {
                                                                    int q1;
                                                                    int q2;
                                                                  };
                                                                  struct Test1 Struct1; Struct1.q1=12; Struct1.q2=14;
                                                              #endif // TEST1_H
                                                              Как теперь сделать ссылку на структуру Struct1 ?
                                                                BlinCT
                                                                • Жел. 6, 2017, 7:11 Т.Ж.

                                                                А вы сильны в своем стремлении создать новый принцып программирования)

                                                                  М
                                                                  • Жел. 6, 2017, 7:13 Т.Ж.

                                                                  Мне нужно просто решить один последний момент моей программы.  Подскажите пожалуйста, как сделать рабочую ссылку на структуру или класс.

                                                                    М
                                                                    • Жел. 6, 2017, 10:05 Т.Ж.

                                                                    разобрался, написал так и заработало

                                                                    QLibrary MyLib("C:\\Qt\\project\\build-StrategyCod-Desktop_Qt_5_9_2_MinGW_32bit-Debug\\debug\\StrategyCod");  
                                                                        MyLib.load();
                                                                        typedef void (*MyPrototype)(MainWindow *);
                                                                        MyPrototype StrategyCod = (MyPrototype) MyLib.resolve("StrategyCod");
                                                                        StrategyCod(&w);  
                                                                        qDebug()<<"q1"<< q1;
                                                                        MyLib.unload();
                                                                      BlinCT
                                                                      • Жел. 7, 2017, 2:29 Т.Ж.

                                                                      Скажите, а это вы пишите на работе что то или нет?)

                                                                        М
                                                                        • Жел. 7, 2017, 2:32 Т.Ж.

                                                                        Нет для себя. Мне удобней такая форма. Производительность не должна страдать. Хотя конечно интерфейс не очень. Но он тут не особо нужен.

                                                                        Но возникла новая трудность. Поместил эту конструкцию в слот класса
                                                                        QLibrary MyLib("C:\\Qt\\project\\build-StrategyCod-Desktop_Qt_5_9_2_MinGW_32bit-Debug\\debug\\StrategyCod");  //путь к библиотеке
                                                                            MyLib.load();//чтение
                                                                            typedef void (*MyPrototype)(double,MainWindow *);
                                                                            MyPrototype StrategyCod = (MyPrototype) MyLib.resolve("StrategyCod");
                                                                            MainWindow w;
                                                                            qDebug()<<NBar;
                                                                            StrategyCod(ParametrForStrategyCod,&w);  //вызов стратегии из библиотеки
                                                                            MyLib.unload();//отключение библиотеки
                                                                        А в самой библиотеке функция
                                                                        void StrategyCod(double Parametr, MainWindow *w)
                                                                        {
                                                                            qDebug()<<"Library work2"<< Parametr<<w->NBar;
                                                                        }
                                                                        qDebug возвращает NBar=1064, а функция NBar=0
                                                                        Скажите пожалуйста что не так?
                                                                        При этом из мэйна нормально работает.
                                                                          BlinCT
                                                                          • Жел. 7, 2017, 2:34 Т.Ж.

                                                                          Это хорошо что вы для себя пишите(или плохо), а то за такое "мне так удобно" вас бы уволили)
                                                                          Но вы наслаждайтесь достижениями)

                                                                            М
                                                                            • Жел. 7, 2017, 2:37 Т.Ж.

                                                                            Это да. Если бы я делал это для кого-то, то наверняка иначе. Все же не могли бы помочь решить вопрос с ссылкой на объект класса. Не знаете, почему при таком вызове выдает 0? И как это поправить?

                                                                              М
                                                                              • Жел. 7, 2017, 2:44 Т.Ж.

                                                                              И пожалуйста не судите строго, это мое первое приложение на с++

                                                                                М
                                                                                • Жел. 7, 2017, 3:22 Т.Ж.

                                                                                Сделал так и заработало

                                                                                StrategyCod(ParametrForStrategyCod,this); 
                                                                                  BlinCT
                                                                                  • Жел. 7, 2017, 3:39 Т.Ж.

                                                                                  Ну знаете, когда человек только учится языку программирования он слушает более знающих и понимающих. Круто что вы так уперты в своих целях. Но и слушать что вам пишут понимающие и знающие больше чем вы, нужно. Вы сейчас пишите для себя, а потом ан работу придете и будет так же писать потому что будете считать что так работает и так норм.
                                                                                  Но это всего лишь совет, как поступать это лично ваше дело.

                                                                                    М
                                                                                    • Жел. 7, 2017, 3:44 Т.Ж.

                                                                                    Я понимаю советы, и считаю что они справедливы и правильны. Просто специфика решаемого мною вопроса толкает меня на такие действия, ну и плюс мое не знание.

                                                                                      М
                                                                                      • Жел. 7, 2017, 3:54 Т.Ж.

                                                                                      А как это запустить в многопоточности, используя лямбда функцию? Этот код не работает:

                                                                                      QVector <double> Perebor1;
                                                                                             for (double i=d1;i<=d2;i=i+d3) 
                                                                                             {
                                                                                                 Perebor1.append(i);
                                                                                             }
                                                                                             QLibrary MyLib("C:\\Qt\\project\\build-StrategyCod-Desktop_Qt_5_9_2_MinGW_32bit-Debug\\debug\\StrategyCod");  
                                                                                             MyLib.load();
                                                                                             typedef void (*MyPrototype)(double,MainWindow *);
                                                                                             MyPrototype StrategyCod = (MyPrototype) MyLib.resolve("StrategyCod");
                                                                                             //StrategyCod(ParametrForStrategyCod,this);  
                                                                                             QFuture<void> Perebor2 = QtConcurrent::map(Perebor1,[&](const double& d){ StrategyCod(d,this);}); 
                                                                                             MyLib.unload();

                                                                                        Пікірлер

                                                                                        Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                                                                                        Кіріңіз немесе Тіркеліңіз
                                                                                        Г

                                                                                        C++ - Тест 001. Первая программа и типы данных

                                                                                        • Нәтиже:66ұпай,
                                                                                        • Бағалау ұпайлары-1
                                                                                        t

                                                                                        C++ - Тест 001. Первая программа и типы данных

                                                                                        • Нәтиже:33ұпай,
                                                                                        • Бағалау ұпайлары-10
                                                                                        t

                                                                                        Qt - Тест 001. Сигналы и слоты

                                                                                        • Нәтиже:52ұпай,
                                                                                        • Бағалау ұпайлары-4
                                                                                        Соңғы пікірлер
                                                                                        G
                                                                                        GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
                                                                                        Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
                                                                                        d
                                                                                        dblas5Шілде 5, 2024, 11:02 Т.Ж.
                                                                                        QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                                                                        k
                                                                                        kmssrАқп. 8, 2024, 6:43 Т.Қ.
                                                                                        Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                                                                        АК
                                                                                        Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
                                                                                        Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                                                                        Енді форумда талқылаңыз
                                                                                        Evgenii Legotckoi
                                                                                        Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
                                                                                        добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                                                                        F
                                                                                        FynjyШілде 22, 2024, 4:15 Т.Ж.
                                                                                        при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
                                                                                        BlinCT
                                                                                        BlinCTМаусым 25, 2024, 1 Т.Ж.
                                                                                        Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
                                                                                        BlinCT
                                                                                        BlinCTМамыр 5, 2024, 5:46 Т.Ж.
                                                                                        Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
                                                                                        Evgenii Legotckoi
                                                                                        Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
                                                                                        Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

                                                                                        Бізді әлеуметтік желілерде бақылаңыз