Просмотр сообщений
|
Страниц: [1] 2 3 ... 57
|
4
|
Разное / Новости Qt сообщества / Re: Доступ к Qt
|
: Июнь 02, 2022, 16:53
|
Есть у кого qtcreator 6-й распакованный (установленный)? Под Windows 7
стоит 6.0.2 на десятке, а что надо? А он на Win 7 запустится? Можешь зазиповать директорию и скинуть на яндекс диск?
|
|
|
6
|
Qt / Общие вопросы / Проблема с QProcess, наверное?
|
: Май 07, 2022, 08:22
|
Небольшой личный проект: https://github.com/trdm/sqlquery используется для изучения английского. Выглядит так: https://raw.githubusercontent.com/trdm/sqlquery/main/Doc/Screenshot_178.pngПроблема сидит в void TextEdit::doSelTextFormat() void TextEdit::doSelTextFormat() { if (!QFile::exists(m_ExePath)) { return; } QString vSel = textCursor().selectedText(); if (vSel.isEmpty()) { return; } //QFile vFile(m_ExePath); QString vExeFile = "SqlFormatter.exe"; QString vSqlFile = "SqlFormatter.sql"; QString vSqlFileС = "SqlFormatterС.sql"; QString vSqlFile2 = "SqlFormatter2.sql"; QString vSqlFile2p = " /o:SqlFormatter2.sql"; QString vBatFile = "SqlFormatter.bat";
QStringList vList = m_ExePath.split("/"); QStringList vList0 = m_ExePath.split("/"); vList0.removeAt(vList.size()-1); QString vFolder = vList0.join("/"); vFolder.append("/");
//vList[vList.size()-1] = vBatFile; QString vPathBat = vFolder; vPathBat.append(vBatFile);
vList[vList.size()-1] = vSqlFile; QString vPathTxt = vList.join("/"); QString vPathTxtС = vList.join("/");
vList[vList.size()-1] = vSqlFile2; QString vPathTxt2 = vList.join("/");
vList.removeAt(vList.size()-1); QString vPathFolder = vList.join("/"); writeToFile(vPathTxt, vSel); writeToFile(vPathBat, QString("SqlFormatter ").append(vSqlFile).append(vSqlFile2p),false);
QStringList arguments; arguments << vSqlFile << vSqlFile2p; //SqlFormatter test*.sql /o:resultfile.sql
QProcess myProcess; //= new QProcess(this); myProcess.setWorkingDirectory(vPathFolder); myProcess.start(vExeFile, arguments); myProcess.waitForFinished(3000); // if (!myProcess.waitForFinished()) // return; QProcess::ProcessError err = myProcess.error();
myProcess.close();
vSel = loadFromFile(vPathTxt2); if (!vSel.isEmpty()) {
QTextCursor cur = textCursor(); setTextCursor(cur);
//cur.removeSelectedText(); //insertPlainText(vSel); //cur.insertText(vSel);
cur.beginEditBlock(); //cur.movePosition(QTextCursor::End); QStringList string_list = vSel.split('\n');
for (int i = 0; i < string_list.size(); i++){ cur.insertText(string_list.at(i)); if ((i + 1) < string_list.size()){ cur.insertBlock(); } } cur.endEditBlock(); } //qDebug() << vPathProc; } При исполнении этого кода прога фризится секунд на 5-10 и/или выдает неправильные результаты.Для форматирования использую внешнюю утилиту из http://architectshack.com/PoorMansTSqlFormatter.ashxссыль на скачивание: http://architectshack.com/GetFile.aspx?Page=PoorMansTSqlFormatter&File=SqlFormatter.1.6.10.zipПожалуйста пните в нужном направлении. Функционал нужен Предполагаю что SqlFormatter.exe ждет разблокировки файла с запросом? Но вроде как файло закрываю. void TextEdit::writeToFile(QString &psPath, QString &psSrc, bool psUtf8) { QFile vSqlFile(psPath); if (!vSqlFile.open(QIODevice::WriteOnly | QIODevice::Text)) { return; } QTextStream out(&vSqlFile); if (psUtf8) { out.setCodec("UTF-8"); } out << psSrc /*<< "\n"*/; out.flush(); vSqlFile.close(); } Юзаю Qt4.8.7 + MSVC 9.0, Win 7
|
|
|
11
|
Разное / Говорилка / Подскажите примерную стоимость плагина для Notepad++ на с++
|
: Декабрь 07, 2017, 12:48
|
Плагин сходен по функционалу с Синтакс-помошником в 1С v7.7 или 8.х Читает xml определенной структуры, выводит дерево с папками и итемами в докабельное окно, где вверху дерево, а внизу RichText с возможностью форматирования или HTMLViewer. Соответственно по хоткею выделенное слово ищется в синтакс-помошнике и позиционируется на нем, если много вхождений выдается список. Работает драг-дроп из этого окна в окно редактора. Есть поиск по слову с последующим позиционированием. Сам подзабыл программинг на WinAPI, даже то что не помнил Скриншот прилагаю. Возможно у кого-то есть подобные наработки?
|
|
|
12
|
Qt / Печать / Re: QPrinter. Автоматическое разбиение на страницы
|
: Ноябрь 09, 2017, 10:56
|
Делал внутри своей софтины. Соответственно сначала рубка на листы идет, а уже потом принтуем: /// Вывод на печать.... bool uoReportDoc::printDoc(const bool updPrintSourse, QWidget* qwidg) { bool retVal = false;
QPrinter* pPrinter = uoReportManager::instance()->printer(); if(!pPrinter){ qWarning() << QString::fromUtf8("Принтер не создан!"); return retVal; }
uorAresList* list = m_pageList; if(updPrintSourse){ list = getPageList(); } if (!list || !list->count()) /// Nagumanov 14.05.2010 Добавлена проверка на размер листа return retVal;
if (!setupPrinter(*pPrinter, qwidg)) return true; /// Nagumanov 14.05.2010 Возвращать true, даже если отказались от печати
int pageNomFrom = 0, pageNomTo = 0; QPrinter::PrintRange prnRange = pPrinter->printRange(); if (prnRange == QPrinter::PageRange) { pageNomFrom = pPrinter->fromPage(); pageNomTo = pPrinter->toPage(); } qreal scaleFactor = m_pagesSetings->scale(); qDebug() << QString("bool uoReportDoc::printDoc scaleFactor = %1").arg(scaleFactor);
uoPainter painter; painter.begin(pPrinter); painter.scale(scaleFactor,scaleFactor); bool firstPage = true; uoReportDrawHelper* drawHelper = new uoReportDrawHelper(this); drawHelper->initDrawInstruments(); drawHelper->setDirectDraw(false); // Если используется пиксмап кешер, то текст почему-то печатается на черном фоне белым.. bool usePC = usePictCasher(); setUsePictCasher(false);
uorReportAreaBase aBase;
uorReportPrintArea* area = NULL; int pageGurNo = 0; uorAresListCnstIter iter = list->constBegin(); while (iter != list->constEnd()){ pageGurNo += 1; if (prnRange == QPrinter::PageRange) { if (!(pageNomFrom<=pageGurNo && pageNomTo>=pageGurNo)){ iter++; continue; } } if (!firstPage) pPrinter->newPage();
area = *iter; aBase = (*area); aBase.m_areaType = 2; drawHelper->drawDataArea(painter, aBase);
iter++; firstPage = false;
} setUsePictCasher(usePC); delete drawHelper; return true; }
|
|
|
|
|