int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit *editor = new QTextEdit; QTextDocument *document = new QTextDocument(editor); QTextCursor cursor(document); QImage image(64, 64, QImage::Format_RGB32); image.fill(qRgb(255, 160, 128)); //! [Adding a resource] document->addResource(QTextDocument::ImageResource, QUrl("mydata://image.png"), QVariant(image)); //! [Adding a resource] //! [Inserting an image with a cursor] QTextImageFormat imageFormat; imageFormat.setName("mydata://image.png"); cursor.insertImage(imageFormat); //! [Inserting an image with a cursor] cursor.insertBlock(); cursor.insertText("Code less. Create more."); editor->setDocument(document); editor->setWindowTitle(tr("Text Document Images")); editor->resize(320, 480); editor->show(); //! [Inserting an image using HTML] editor->append("<img src=\"mydata://image.png\" />"); //! [Inserting an image using HTML] return app.exec(); }
int TextEdit::setDocument(lua_State * L) // ( QTextDocument * document ) { QTextEdit* obj = ObjectHelper<QTextEdit>::check( L, 1); QTextDocument* document = ObjectHelper<QTextDocument>::check( L, 2 ); obj->setDocument( document ); return 0; }/*
int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit *editor = new QTextEdit; //! [0] QTextDocument *document = new QTextDocument(editor); QTextCursor cursor(document); //! [0] //! [1] QTextImageFormat imageFormat; imageFormat.setName(":/images/advert.png"); cursor.insertImage(imageFormat); //! [1] cursor.insertBlock(); cursor.insertText("Code less. Create more."); editor->setDocument(document); editor->setWindowTitle(tr("Text Document Images")); editor->resize(320, 480); editor->show(); return app.exec(); }
int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit *editor = new QTextEdit; QTextDocument *document = new QTextDocument(editor); QTextCursor cursor(document); QTextImageFormat imageFormat; imageFormat.setName(":/images/advert.png"); cursor.insertImage(imageFormat); QTextBlock block = cursor.block(); QTextFragment fragment; QTextBlock::iterator it; for (it = block.begin(); !(it.atEnd()); ++it) { fragment = it.fragment(); if (fragment.contains(cursor.position())) break; } //! [0] if (fragment.isValid()) { QTextImageFormat newImageFormat = fragment.charFormat().toImageFormat(); if (newImageFormat.isValid()) { newImageFormat.setName(":/images/newimage.png"); QTextCursor helper = cursor; helper.setPosition(fragment.position()); helper.setPosition(fragment.position() + fragment.length(), QTextCursor::KeepAnchor); helper.setCharFormat(newImageFormat); //! [0] //! [1] } //! [1] //! [2] } //! [2] cursor.insertBlock(); cursor.insertText("Code less. Create more."); editor->setDocument(document); editor->setWindowTitle(tr("Text Document Image Format")); editor->resize(320, 480); editor->show(); return app.exec(); }
void TextZone::createThumbnail() { QWidget *w = QApplication::focusWidget(); if(w){ // pixmap.fill( Qt::white ); // QPainter painter( &pixmap ); // painter.setPen( Qt::black ); //// rect.translate( 0, rect.height()+10 ); //// rect.setHeight( 160 ); // doc.setTextWidth( rect.width() ); // painter.save(); // painter.translate( rect.topLeft() ); // doc.drawContents( &painter, rect.translated( -rect.topLeft() ) ); // painter.restore(); // rect.setHeight( textDocument.size().height()-160 ); // painter.setBrush( Qt::gray ); // painter.drawRect( rect ); // pixmap.save( "text.png" ); QTextEdit tempEdit; tempEdit.setDocument(textDocument); tempEdit.setFixedHeight(textDocument->size().height()); tempEdit.setFixedWidth(textDocument->textWidth()); #if QT_VERSION < 0x050000 QPixmap thumbnail = QPixmap::grabWidget(&tempEdit); #endif #if QT_VERSION >= 0x050000 QPixmap thumbnail = tempEdit.grab(); #endif emit textThumbnailSignal(thumbnail); } }
QMap<int, QList<QRectF>> TextDocumentAdapter::GetTextPositions (const QString& text, Qt::CaseSensitivity cs) { const auto& pageSize = Doc_->pageSize (); const auto pageHeight = pageSize.height (); QTextEdit hackyEdit; hackyEdit.setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff); hackyEdit.setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOff); hackyEdit.setFixedSize (Doc_->pageSize ().toSize ()); hackyEdit.setDocument (Doc_.get ()); Doc_->setPageSize (pageSize); const auto tdFlags = cs == Qt::CaseSensitive ? QTextDocument::FindCaseSensitively : QTextDocument::FindFlags (); QMap<int, QList<QRectF>> result; auto cursor = Doc_->find (text, 0, tdFlags); while (!cursor.isNull ()) { auto endRect = hackyEdit.cursorRect (cursor); auto startCursor = cursor; startCursor.setPosition (cursor.selectionStart ()); auto rect = hackyEdit.cursorRect (startCursor); const int pageNum = rect.y () / pageHeight; rect.moveTop (rect.y () - pageHeight * pageNum); endRect.moveTop (endRect.y () - pageHeight * pageNum); if (rect.y () != endRect.y ()) { rect.setWidth (pageSize.width () - rect.x ()); endRect.setX (0); } auto bounding = rect | endRect; result [pageNum] << bounding; cursor = Doc_->find (text, cursor, tdFlags); } return result; }
QTextDocument * Exporter::buildFinalDoc() { //search for checked items : QDomDocument domDoc = hub->project()->mainTreeDomDoc(); QDomElement root = domDoc.documentElement(); QList<QDomElement> itemList = searchForCheckedItems(root); if(itemList.size() == 0) return new QTextDocument(); // set up the progress bar : QWidget *progressWidget = new QWidget(this, Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); QHBoxLayout *progressLayout = new QHBoxLayout(progressWidget); QProgressBar *progressBar = new QProgressBar(progressWidget); int progressValue = 0; progressLayout->addWidget(progressBar); progressWidget->setLayout(progressLayout); progressBar->setMaximum(itemList.size()); progressBar->setValue(progressValue); progressWidget->show(); // QString debug; // qDebug() << "itemList" << debug.setNum(itemList->size()); QTextDocument *textDocument = new QTextDocument(this); QTextEdit *edit = new QTextEdit(this); textDocument->setDefaultStyleSheet("p, li { white-space: pre-wrap; } p{line-height: 2em; font-family:'Liberation Serif'; font-size:12pt;margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:72px;}"); for(int i = 0; i < itemList.size(); ++i){ QDomElement element = itemList.at(i); QTextCursor *tCursor = new QTextCursor(textDocument); QTextBlockFormat blockFormatLeft; blockFormatLeft.setBottomMargin(0); blockFormatLeft.setTopMargin(0); blockFormatLeft.setTextIndent(72); blockFormatLeft.setLineHeight(200, QTextBlockFormat::ProportionalHeight); blockFormatLeft.setAlignment(Qt::AlignJustify); QTextCharFormat charFormatLeft; charFormatLeft.setFontPointSize(12); charFormatLeft.setFontFamily("Courrier"); QTextBlockFormat blockFormatCenter; blockFormatCenter.setAlignment(Qt::AlignCenter); if(element.tagName() != "separator"){ qDebug() << "element name : "+ element.attribute("name"); MainTextDocument *textDoc = hub->project()->findChild<MainTextDocument *>("textDoc_" + element.attribute("number")); MainTextDocument *synDoc = hub->project()->findChild<MainTextDocument *>("synDoc_" + element.attribute("number")); MainTextDocument *noteDoc = hub->project()->findChild<MainTextDocument *>("noteDoc_" + element.attribute("number")); QTextDocumentFragment textFrag(prepareTextDoc(textDoc)); QTextDocumentFragment synFrag(prepareSynDoc(synDoc)); QTextDocumentFragment noteFrag(prepareNoteDoc(noteDoc)); edit->setDocument(textDocument); if(element.tagName() == "book"){ textDocument->setMetaInformation(QTextDocument::DocumentTitle,element.attribute("name", "")); edit->append("<h1>" + element.attribute("name", "") + "</h1>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<h4>" + QDateTime::currentDateTime().toString() + "</h4>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); edit->append("<br>"); } if(element.tagName() == "act"){ edit->append("<br>"); edit->append("<br>"); edit->append("<h2>" + element.attribute("name", "") + "</h2>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); } if(element.tagName() == "chapter"){ edit->append("<br>"); edit->append("<br>"); edit->append("<h2>" + element.attribute("name", "") + "</h2>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); } if(element.tagName() == "scene" && ui->setSceneTitlesComboBox->currentIndex() != 0){ QString sceneTitle; switch (ui->setSceneTitlesComboBox->currentIndex()){ case 1: sceneTitle = element.attribute("name", ""); break; case 2: sceneTitle = "###"; break; case 3: sceneTitle = "***"; break; default: sceneTitle = element.attribute("name", ""); break; } edit->append("<br>"); edit->append("<h3>" + sceneTitle + "</h3>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); } if(ui->synopsisCheckBox->isChecked() && !synFrag.isEmpty()){ edit->append("<br>"); edit->append("<h4>" + tr("Synopsis") + "</h4>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->insertBlock(blockFormatLeft, charFormatLeft); tCursor->insertFragment(synFrag); } if(ui->notesCheckBox->isChecked() && !noteFrag.isEmpty()){ edit->append("<br>"); edit->append("<h4>" + tr("Note") + "</h4>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->insertBlock(blockFormatLeft, charFormatLeft); tCursor->insertFragment(noteFrag); } if(ui->storyCheckBox->isChecked()){ if((ui->synopsisCheckBox->isChecked() || ui->notesCheckBox->isChecked()) && !textFrag.isEmpty()){ tCursor->insertBlock(); tCursor->insertHtml("<h4>" + tr("Story") + "</h4>"); tCursor->mergeBlockFormat(blockFormatCenter); tCursor->insertBlock(); } tCursor->insertHtml("<br>"); // tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->insertBlock(blockFormatLeft, charFormatLeft); tCursor->insertFragment(textFrag); // edit->append(textFrag->toHtml()); } } else if(element.tagName() == "separator"){ edit->append("<br>"); edit->append("<h3>#</h3>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatCenter); edit->append("<br>"); tCursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor,1); tCursor->mergeBlockFormat(blockFormatLeft); } progressValue += 1; progressBar->setValue(progressValue); } QRegExp reg("-qt-paragraph-type:.*;|margin-top:.*;|margin-bottom:.*;|margin-left:.*;|margin-right:.*;|-qt-block-indent:.*;|text-indent:.*;|font-family:.*;|font-size:.*;"); reg.setMinimal(true); textDocument->setHtml(textDocument->toHtml().remove(reg)); //find and change final page css style : //textDocument->setDefaultStyleSheet("p, li { white-space: pre-wrap; } p{line-height: 2em; font-family:'Liberation Serif'; font-size:14pt;margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:72px;}"); // <style type="text/css"> // p, li { white-space: pre-wrap; } // </style> // tCursor // qDebug() << textDocument->toHtml(); progressWidget->close(); return textDocument; }
void PackThemeDataWidget::parseThemes(KviPointerList<KviThemeInfo> * pThemeInfoList) { QString szPackageName; QString szPackageAuthor; QString szPackageDescription; QString szPackageVersion; KviThemeInfo * pThemeInfo = 0; bool bPackagePathSet = false; QString szPackagePath = QDir::homePath(); KviQString::ensureLastCharIs(szPackagePath,QChar(KVI_PATH_SEPARATOR_CHAR)); if(pThemeInfoList->count() > 1) { szPackageName = "MyThemes"; szPackageAuthor = __tr2qs_ctx("Your name here","theme"); szPackageVersion = "1.0.0"; szPackageDescription = __tr2qs_ctx("Put a package description here...","theme"); } else { if(pThemeInfoList->count() > 0) { pThemeInfo = pThemeInfoList->first(); szPackageName = pThemeInfo->subdirectory(); szPackageAuthor = pThemeInfo->author(); szPackageDescription = pThemeInfo->description(); szPackageVersion = pThemeInfo->version(); szPackagePath += pThemeInfo->subdirectory(); if(szPackagePath.indexOf(QRegExp("[0-9]\\.[0-9]")) == -1) { szPackagePath += "-"; szPackagePath += szPackageVersion; } szPackagePath += KVI_FILEEXTENSION_THEMEPACKAGE; bPackagePathSet = true; } } if(!bPackagePathSet) { szPackagePath += szPackageName; szPackagePath += "-"; szPackagePath += szPackageVersion; szPackagePath += KVI_FILEEXTENSION_THEMEPACKAGE; } QVBoxLayout * pLayout = new QVBoxLayout(this); QString szThemesDescription = "<html><body bgcolor=\"#ffffff\">"; int iIdx = 0; QPixmap pixScreenshot; QString szScreenshotPath; for(pThemeInfo = pThemeInfoList->first(); pThemeInfo; pThemeInfo = pThemeInfoList->next()) { QString szThemeDescription; if(pixScreenshot.isNull()) { pixScreenshot = pThemeInfo->smallScreenshot(); if(!pixScreenshot.isNull()) szScreenshotPath = pThemeInfo->smallScreenshotPath(); } ThemeFunctions::getThemeHtmlDescription( szThemeDescription, pThemeInfo->name(), pThemeInfo->version(), pThemeInfo->description(), pThemeInfo->subdirectory(), pThemeInfo->application(), pThemeInfo->author(), pThemeInfo->date(), pThemeInfo->themeEngineVersion(), pThemeInfo->smallScreenshot(), iIdx ); if(iIdx > 0) szThemesDescription += "<hr>"; szThemesDescription += szThemeDescription; iIdx++; } szThemesDescription += "</body></html>"; QTextEdit * pTextEdit = new QTextEdit(this); pTextEdit->setBackgroundRole(QPalette::Window); pTextEdit->setReadOnly(true); QTextDocument * pDoc = new QTextDocument(pTextEdit); pDoc->setHtml(szThemesDescription); pTextEdit->setDocument(pDoc); pLayout->addWidget(pTextEdit); setField("packageName",QVariant(szPackageName)); setField("packageVersion",szPackageVersion); setField("packageDescription",szPackageDescription); setField("packageAuthor",szPackageAuthor); }
void QTextEditProto::setDocument(QTextDocument *document) { QTextEdit *item = qscriptvalue_cast<QTextEdit*>(thisObject()); if (item) item->setDocument(document); }