Михаиллл
Михаиллл19 января 2019 г. 5:08

Как документ RTF конвертировать в HTML

Qt, rtf, HTML, CONVERT

Добрый день.
Как документ RTF конвертировать в HTML?
Могу его открыть и прочитать так:

    QString file = QFileDialog::getOpenFileName(0, "Выберете резюме hh.ru", "", "*.rtf");
    if(!file.isEmpty())
    {
        QFile sFile(file);
        if(sFile.open(QFile::ReadOnly | QFile::Text)){
            QTextStream in(&sFile);
            //QTextDocument textDocument;
            //textDocument = in.readAll().toHtmlEscaped();
            QString text = in.readAll();
            sFile.close();

            ui->ResumeHHTextEdit->setHtml(text);
            qDebug()<<text;
        }
    }

Тут Есть подходящая библиотека. Вот , наверно, нужный dll.
Itenso.Rtf.Converter.Html.dll Itenso.Rtf.Converter.Html.dll
Но не могу его дабавить его к проекту как библиотеку, проект требует только формат .lib

Еще тут есть проект. Но не пойму, как еого использовать.
Помогите пожалуйста.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

26
Михаиллл
  • 19 января 2019 г. 5:41

хотя как динамическая Itenso.Rtf.Converter.Html.dll подключается

    Михаиллл
    • 19 января 2019 г. 10:41

    Нашел тут код конвертации:

    var
      W: Variant;
    begin
      W := CreateOleObject('Word.Application');
      W.Documents.Open('e:\test.rtf',False,False);
      W.ActiveDocument.SaveAs('e:\test.html',wdFormatHTML);
      W.ActiveDocument.CLose;
      W.Quit;
      W := UnAssigned;
    

    но это видимо синтаксис VS.
    Помогите пожалуйста переписать под QT.
    Наверно это будет примерно так:

     QString resumeFileName = QFileDialog::getOpenFileName(0, "Выберете резюме hh.ru", "", "*.rtf");
        QString saveFile = "C:/Users/MS/Downloads/Test.html";
            if(!resumeFileName.isEmpty())
            {
                  QAxObject   wordApplication("Word.Application");
                  QAxObject *documents = wordApplication.querySubObject("Documents");              
                  //QAxObject *document = documents->querySubObject("Open(const QString&, bool)", resumeFileName, true);
                  QAxObject *document = documents->querySubObject("Open(const QVariant&, bool)", resumeFileName, true);
                  QAxObject *words = document->querySubObject("Words");
                  words->querySubObject("Тут запрос конвертации");
    
                  document->dynamicCall("Close (boolean)", false);
               } 
    
    
      Михаиллл
      • 19 января 2019 г. 11:23

      извиняюсь, код на делфи, но подход наверно правильный.

        Evgenii Legotckoi
        • 19 января 2019 г. 13:08

        Добрый день.

        Я с ActiveX на Вы полностью до незнакомства. Но если поясните кое-какие моменты, то возможно у меня будет идея, которая вас натолкнёт на нужное русло. Поэтому вопрос такой.

        А Вы нашли вообще способ сохранять файлы через QAxObject? Дело в том, что тот код на Дельфи-то конечно отражает алгоритм, но библиотеки-то разные?

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

        words->querySubObject("SaveAs('e:\test.html', wdFormatHTML)");
        

        Но не знаю, у вас уже есть какие-нибудь примеры сохранение через QAxObject?

          Михаиллл
          • 20 января 2019 г. 8:33

          Так тоже не работает, но наверно что то похожее должно заработать.
          Что то похожее я видел тут и тут .
          Как я понял этот вариант должен работать через библиотеки Word. Запрос querySubObject должен вызвать нужную функцию.

            Михаиллл
            • 20 января 2019 г. 8:35

            Еще я видиле библиотеки на java и C#, которые могут также конывертировать. Не знаете ли вы, можно ли их использовать?

              Evgenii Legotckoi
              • 21 января 2019 г. 2:40

              Бибилотеки Java и С# можно использовать, если они будут добавлены в самостоятельную программу, которая будет работать в консольном режиме. Тогда через QProcess можно будет вызывать данную программу и выполнять конвертирование.

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

                Михаиллл
                • 21 января 2019 г. 3:11

                Похоже я нашел решение на с++
                Тут автор описывает про магическое превращение через буфер обмена средствами Word.
                Вот
                7925-Rtf2HtmlProj.zip 7925-Rtf2HtmlProj.zip
                Вот код автора:

                // Rtf2Html.cpp : Defines the entry point for the console application. 
                // 
                #include "stdafx.h" 
                #include "Rtf2Html2.h" 
                #include "afxhtml.h" 
                
                CWinApp theApp;  // Win32 App with MFC support 
                
                CRichEditCtrl g_ctlRichEdit;  // the two controls 
                CHtmlEditCtrl g_ctlEditHtml; 
                
                // This is needed to load the RichEdit control from a file 
                static DWORD CALLBACK  
                MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) 
                { 
                   CFile* pFile = (CFile*) dwCookie; 
                   *pcb = pFile->Read(pbBuff, cb); 
                   return 0; 
                } 
                
                void LoadRtfFile( LPCTSTR pszFilename ) 
                { 
                    wchar_t szFilter[] = L"RTF files (*.rtf)|*.rtf;|" 
                                         L"All Files (*.*)|*.*||"; 
                    CFileDialog dlg(TRUE,0,pszFilename,6,szFilter ); 
                    if ( dlg.DoModal()!=IDOK ) { 
                        return; 
                    } 
                    CFile cf( dlg.GetPathName(),CFile::modeRead ); 
                
                    // CFile cf( pszFilename,CFile::modeRead ); 
                    EDITSTREAM es; 
                    es.dwCookie = (DWORD)&cf; 
                    es.pfnCallback = MyStreamInCallback;  
                    g_ctlRichEdit.StreamIn( SF_RTF, es ); // load from the file 
                } 
                
                int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
                { 
                    AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0); 
                    AfxInitRichEdit2(); // needed for using CRichEditCtrl 
                
                    CWnd* pWnd = CWnd::GetDesktopWindow(); 
                    CRect r(0,0,200,200); 
                
                    g_ctlRichEdit.Create( ES_MULTILINE, r, pWnd, 1111); 
                    g_ctlEditHtml.Create( 0,0, r, pWnd, 2222 ); 
                
                    LoadRtfFile( argv[1] );     // read the RTF file into the ctrl  
                    g_ctlRichEdit.SetSel(0,-1); // select all in the RTF ctrl 
                    g_ctlRichEdit.Copy();       // copy to clipboard 
                    g_ctlEditHtml.Paste();      // paste into the Html Edit ctrl 
                    g_ctlEditHtml.SaveAs( L"C:\\temp\\test.html");  // save HTML 
                
                    return 0; 
                }
                

                Не могли бы вы мне помочь адаптировать это под QT

                  Evgenii Legotckoi
                  • 21 января 2019 г. 3:38

                  Call back функцию (MyStreamInCallback) можно так и копировать в проект на Qt, также функцию LoadRtfFile можно так и копировать.

                  Думаю, что здесь особо адаптировать-то нечего, просто добавить в проект на Qt все те функции, а код в _tmain вынести в какой-нибудь слот.

                    Михаиллл
                    • 21 января 2019 г. 6:16
                    • (ред.)

                    Попробовал, но QT выдает много ошибок, говорит что не знает : LPCTSTR, CFileDialog, CFile, EDITSTREAM и т.д.
                    Для того, чтобы это испраить, видимо нужны какие то файлы из MSVC.

                    Так же нашел библиотеку, скомпилированную на C# .
                    Там же и примеры на C#.
                    Вот документация по этой библиотеке.
                    Подключил эту библиотеку.
                    Пробую воспользоваться этой библиотекой, пока выходит так:

                    typedef void (*MyPrototype)(QString);
                        MyPrototype OpenDocx = (MyPrototype) rtf2HtmlLib.resolve("OpenDocx");
                        MyPrototype ToHtml = (MyPrototype) rtf2HtmlLib.resolve("ToHtml"); 
                    

                    Помогите пожалуйста разобраться с этим

                      Михаиллл
                      • 21 января 2019 г. 6:50

                      Для решения этой задачи нужно как-то использовать функцию

                      public string ConvertFileToString(
                          string inputFileName
                      )
                      Public Function ConvertFileToString ( _
                          inputFileName As String _
                      ) As String
                      

                      вот только она не статичная и не понятно как создать объект нужного класса

                        Evgenii Legotckoi
                        • 21 января 2019 г. 7:35

                        Ну не цепляются C# библиотеки в C++ коде, обратное возможно.

                          Михаиллл
                          • 21 января 2019 г. 9:48

                          Скажите пожалуйста, что же делать с ошибками незнания: LPCTSTR, CFileDialog, CFile, EDITSTREAM и прочего

                            Evgenii Legotckoi
                            • 21 января 2019 г. 9:53
                            • (ред.)

                            Это всё из MFC, нужно заменять на QFileDialog, QFile и т.д. Или подключать соответствующие библиотеки из WinAPI, что априори плохая мысль, если используется Qt. . Не работал с теми библиотеками, только с Qt.

                            Делать это строчка, за строчкой. А не сразу наскоком.

                              Михаиллл
                              • 21 января 2019 г. 11:24

                              Нашел ссылку на древние типы данных , а тут нынешние их аналоги.
                              Но все равно каое что непоня:
                              что такое : LPCTSTR, CALLBACK (наверно QDialig),IDOK, EDITSTREAM, TCHAR
                              Код у меня получился (не доработанный) такой:

                              #ifndef RTFTOHTML_H
                              #define RTFTOHTML_H
                              
                              #include <QFile>
                              #include <QDialog>
                              // Rtf2Html.cpp : Defines the entry point for the console application. 
                              // 
                              //#include "stdafx.h" 
                              //#include "Rtf2Html2.h" 
                              //#include "afxhtml.h" 
                              
                              //CWinApp theApp;  // Win32 App with MFC support 
                              
                              //CRichEditCtrl g_ctlRichEdit;  // the two controls 
                              //CHtmlEditCtrl g_ctlEditHtml; 
                              
                              // This is needed to load the RichEdit control from a file 
                              static int CALLBACK  
                               MyStreamInCallback(int dwCookie, char pbBuff, long long cb, long long *pcb) 
                              { 
                                 QFile* pFile = (QFile*) dwCookie; 
                                 *pcb = pFile->Read(pbBuff, cb); 
                                 return 0; 
                              } 
                              
                              void LoadRtfFile( LPCTSTR pszFilename ) 
                              { 
                                  wchar_t szFilter[] = L"RTF files (*.rtf)|*.rtf;|" 
                                                       L"All Files (*.*)|*.*||"; 
                                  QFileDialog dlg(true,0,pszFilename,6,szFilter ); 
                                  if ( dlg.DoModal()!=IDOK ) { 
                                      return; 
                                  } 
                                  QFile cf( dlg.GetPathName(),QFile::modeRead ); 
                              
                                  // QFile cf( pszFilename,QFile::modeRead ); 
                                  EDITSTREAM es; 
                                  es.dwCookie = (int)&cf; 
                                  es.pfnCallback = MyStreamInCallback;  
                                  g_ctlRichEdit.StreamIn( SF_RTF, es ); // load from the file 
                              } 
                              
                              int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
                              { 
                                  AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0); 
                                  AfxInitRichEdit2(); // needed for using CRichEditCtrl 
                              
                                  CWnd* pWnd = CWnd::GetDesktopWindow(); 
                                  CRect r(0,0,200,200); 
                              
                                  g_ctlRichEdit.Create( ES_MULTILINE, r, pWnd, 1111); 
                                  g_ctlEditHtml.Create( 0,0, r, pWnd, 2222 ); 
                              
                                  LoadRtfFile( argv[1] );     // read the RTF file into the ctrl  
                                  g_ctlRichEdit.SetSel(0,-1); // select all in the RTF ctrl 
                                  g_ctlRichEdit.Copy();       // copy to clipboard 
                                  g_ctlEditHtml.Paste();      // paste into the Html Edit ctrl 
                                  g_ctlEditHtml.SaveAs( L"C:\\temp\\test.html");  // save HTML 
                              
                                  return 0; 
                              }
                              
                              #endif // RTFTOHTML_H
                              
                              

                              помогите пожалуйста до конца разобраться с ним.
                              И скажите пожалуйста , почему не стоит использовать WinAPI, при работе с QT?

                                Михаиллл
                                • 22 января 2019 г. 3:54

                                Тут нашел
                                rtftohtml_win32.zip rtftohtml_win32.zip . Похоже она скомпилированна на С++.
                                Подключил библиотеку как динамическую.
                                Теперь пытаюсь воспользоваться методом

                                char * ConvertString(char * rtfBuf, char * htmlBuf, struct convertOptions opt) 
                                

                                Пока заготовка такая

                                typedef void (*MyPrototype)(QString);
                                    MyPrototype ConvertRtfFileToString = (MyPrototype) rtf2HtmlLib.resolve("ConvertString");
                                    QString text;
                                    text = ConvertRtfFileToString("C:/Users/MS/Desktop/Резюме/резюме/отправила - 3334709 - Дмитрий.rtf");
                                

                                Но выдает ошибку: no viable overloaded '='
                                Помогите пожалуйста воспользоваться этим методом.

                                  Evgenii Legotckoi
                                  • 22 января 2019 г. 4:06
                                  • (ред.)

                                  Там в примерах в архиве есть пример определения сигнатуры функции.

                                  typedef int (* cfunc)(char * rtffile, char *outfolder, struct convertOptions);
                                  cfunc ConvertFile;
                                  

                                  То есть сигнатура только так может объявляться. Вам нужно передать имя файла, каталог, где он находится и структуру настроек. Иначе никак. Передача QString туда никак не подойдёт.

                                  Думаю, что в документации там есть информация о параметрах в той структуре настроек.

                                    Михаиллл
                                    • 22 января 2019 г. 11:02

                                    В документации она не описанна, только в примере:

                                    struct convertOptions
                                    {
                                        int  htmlType;           //0-XHTML, 1- HTML, 2-HTML+CSS
                                        char title[120];         //Page title   
                                        char extension[10];      //for example, ".html"
                                        char fontFace[50];       //for example, "Arial" or "Times New Roman"
                                        char fontSize[10];       //for example ,"10"
                                        int  preserveImages;     //0-no, 1 - yes 
                                        int  preserveFontFace;   //0-no, 1 - yes 
                                        int  preserveFontSize;   //0-no, 1 - yes 
                                        int  preserveFontColor;  //0-no, 1 - yes 
                                        int  preserveHyperlinks;    //0-no, 1 - yes
                                        int  tableBorders;       //0-invisble, 1 - visible
                                        int  encoding;           /* Windows_1250=0, Windows_1251=1, Windows_1252=2, Windows_1253=3,
                                                                    Windows_1254=4, Windows_1255=5, Windows_1256=6, Windows_1257=7,
                                                                    Windows_1258=8, ISO_8859_1=9,   ISO_8859_2=10,  ISO_8859_3=11,
                                                                    ISO_8859_4=12,  ISO_8859_5=13,  ISO_8859_6=14,  ISO_8859_7=15,
                                                                    ISO_8859_8=16,  ISO_8859_9=17,  KOI8_R=18,      UTF_8=19    */
                                        int  htmlParts;          //0-html Complete, 1 - only between <body>..</body>
                                        char imageFolder[500];   //folder where image will be stored
                                        char cssStyleName[120];  //style name, for example "ts"
                                        int  fontSizesType;      //0-normal sizes, 1 - medium sizes, 2 - big sizes, 3 - huge sizes
                                        char imageSubfolder[120];//will create subfolder for storing images, if ""-empty string then images will be strored in 'image_folder' 
                                        int  hyperlinkTarget;    //0 - no target, 1 - target="_blank",  2 - _self, 3 - _parent, 4 - _top
                                        int  cssStartNumber;     //number for style name, like a .tsN (.ts1 or .ts100)
                                        char Serial[12];
                                    };
                                    

                                    На этой строчке

                                    ConvertFile=(cfunc)GetProcAddress(rtf2HtmlLib,"ConvertFile");
                                    

                                    Выдает ошибку : no matching function for call to 'GetProcAddress'

                                    попробовал сделать так и программа зависла

                                    ypedef int (* cfunc)(char * rtffile, char *outfolder, struct convertOptions);
                                        cfunc ConvertFile;
                                    
                                    
                                        int ret;
                                        char rtffile[_MAX_PATH];
                                        char outfolder[_MAX_PATH];
                                    
                                        //load library
                                        //HINSTANCE rtf2HtmlLib=LoadLibrary("Sautinsoft.RTFToHTML.Win32.dll");
                                    
                                        /*if(rtf2HtmlLib==NULL)
                                        {
                                          printf("Unable to load library\n");
                                          getchar();
                                          //return 0;
                                        }*/
                                        //ConvertFile=(cfunc)GetProcAddress(rtf2HtmlLib,"ConvertFile");
                                    
                                        //typedef void (*MyPrototype)(QString *rtfFile, QString *outFolder, struct convertOptions);
                                        //MyPrototype ConvertFile = (MyPrototype) rtf2HtmlLib.resolve("ConvertFile");
                                    
                                    
                                        /*if (ConvertFile==NULL)
                                        {
                                            printf("Can't load function.\n");
                                            FreeLibrary((HMODULE)rtf2HtmlLib);
                                            getchar();
                                            //return 0;
                                        }*/
                                        //
                                        printf("Please enter rtf file (example: d:\\my.rtf):\n");
                                        gets(rtffile);
                                        printf("Please enter output folder (example : d:\\temp):\n");
                                        gets(outfolder);
                                    
                                        //set conversion params
                                        struct convertOptions ct;
                                        ct.cssStartNumber=1;
                                        strcpy(ct.cssStyleName,"ts");
                                        ct.encoding=9;
                                        strcpy(ct.extension,".htm");
                                        strcpy(ct.fontFace,"Verdana");
                                        strcpy(ct.fontSize,"10");
                                        ct.htmlType=1;
                                        ct.preserveFontColor=1;
                                        ct.preserveFontFace=1;
                                        ct.preserveFontSize=1;
                                        ct.preserveImages=1;
                                        ct.preserveHyperlinks=1;
                                        ct.tableBorders=1;
                                        ct.htmlParts=0; //only between <body>...</body>
                                        strcpy(ct.title,"My Page");
                                        strcpy(ct.imageFolder,"D:\\");
                                        strcpy(ct.imageSubfolder,"test.files");
                                        ct.hyperlinkTarget=0;
                                        strcpy(ct.Serial,"Serial number");
                                    
                                    
                                        ret=ConvertFile("C:/Users/MS/Desktop/Резюме/резюме/отправила - 3334709 - Дмитрий.rtf","C:/Users/MS/Desktop/Резюме/резюме",ct);
                                    
                                        switch(ret)
                                        {
                                            case -1 : puts("Check your serial number");break;
                                            case 0 : puts("Conversion completed");break;
                                            case 2 : puts("Not enough memory"); break;
                                            case 3 : puts("Can't open output file"); break;
                                            case 4 : puts("Can't open input file"); break;
                                            case 5 : puts("The input file has zerow length"); break;
                                            default: break;
                                        }
                                        //flushall
                                        getchar();
                                    

                                    Помогите пожалуйста разобраться с этой библиотекой

                                      Evgenii Legotckoi
                                      • 22 января 2019 г. 13:19

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

                                        Михаиллл
                                        • 23 января 2019 г. 2:54
                                        • (ред.)

                                        Зарание спасибо.
                                        А еще на эту тему можно будет сделать статью. Это контент будет уникальным.

                                          Evgenii Legotckoi
                                          • 25 января 2019 г. 7:03
                                          • (ред.)

                                          А вы случаем ту библиотеку не планируете подключать в приложение на Андроид?

                                          И вообще использовать ActiveX на андроиде?

                                            Михаиллл
                                            • 25 января 2019 г. 7:25

                                            нет, не планирую

                                              Михаиллл
                                              • 25 января 2019 г. 8:44
                                              • Ответ был помечен как решение.

                                              вот именно так работает конвертация:

                                              QVariant fileFormat(0x0000000A);     //Saving as filtered html
                                                  QString resumeFileName; //= QFileDialog::getOpenFileName(0, "Выберете резюме hh.ru", "", "*.rtf");
                                                  resumeFileName = "C:\\Users\\MS/Downloads\\Абсент.docx";
                                                  QString saveFile = "C:\\Users\\MS/Downloads\\Test.html";
                                                      if(!resumeFileName.isEmpty())
                                                      {
                                                            QAxObject   wordApplication("Word.Application");
                                                            QAxObject *documents = wordApplication.querySubObject("Documents");
                                              
                                                            QAxObject *document = documents->querySubObject("Open(const QVariant&, bool)", resumeFileName, true);
                                                            document->querySubObject("SaveAs(const QVariant&,const QVariant)", saveFile, fileFormat);
                                              
                                              
                                                            document->dynamicCall("Close (boolean)", false);
                                              
                                              
                                              
                                                            qDebug()<<resumeFileName;
                                                      }
                                              

                                              конвертирует через ворд

                                                Evgenii Legotckoi
                                                • 25 января 2019 г. 8:45

                                                Я вас поздравляю. Приятно наблюдать за прогрессом.

                                                  Evgenii Legotckoi
                                                  • 25 января 2019 г. 8:48
                                                  • (ред.)

                                                  Пожалуй, я тогда не буду заниматься той библиотекой. Всё равно она какая-то мутная на первый взгляд.

                                                    Михаиллл
                                                    • 25 января 2019 г. 11:05

                                                    и еще в конце нужно дописать для закрытия процесса (иначе будет в памяти висеть):

                                                    wordApplication.dynamicCall("Quit()");
                                                    

                                                      Комментарии

                                                      Только авторизованные пользователи могут публиковать комментарии.
                                                      Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                                      Г

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

                                                      • Результат:66баллов,
                                                      • Очки рейтинга-1
                                                      t

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

                                                      • Результат:33баллов,
                                                      • Очки рейтинга-10
                                                      t

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

                                                      • Результат:52баллов,
                                                      • Очки рейтинга-4
                                                      Последние комментарии
                                                      G
                                                      GoattRock3 сентября 2024 г. 13:50
                                                      Как Копировать Файлы в Linux Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
                                                      ВР
                                                      Влад Русоков2 августа 2024 г. 1:47
                                                      Как Копировать Файлы в Linux Screenshot_20240802-065123.png
                                                      d
                                                      dblas55 июля 2024 г. 11:02
                                                      QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                                      k
                                                      kmssr8 февраля 2024 г. 18:43
                                                      Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                                      АК
                                                      Анатолий Кононенко5 февраля 2024 г. 1:50
                                                      Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                                      Сейчас обсуждают на форуме
                                                      Evgenii Legotckoi
                                                      Evgenii Legotckoi24 июня 2024 г. 15:11
                                                      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                                      F
                                                      Fynjy22 июля 2024 г. 4:15
                                                      при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
                                                      BlinCT
                                                      BlinCT25 июня 2024 г. 1:00
                                                      Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
                                                      BlinCT
                                                      BlinCT5 мая 2024 г. 5:46
                                                      Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
                                                      Evgenii Legotckoi
                                                      Evgenii Legotckoi2 мая 2024 г. 14:07
                                                      Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

                                                      Следите за нами в социальных сетях