日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT中关于书签的操作

發布時間:2023/12/14 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT中关于书签的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

書簽的基礎操作

// 通過標簽名來獲得指定標簽對象 QAxObject *pBookMarkCode = m_document->querySubObject("Bookmarks(QVariant)", name);// 通過標簽名的位置順序獲得標簽對象 QAxObject *pBookMarkCode = m_document->querySubObject("Bookmarks(QVariant)", 1);//獲得第一個標簽// 選擇指定標簽(說實話不知道干啥的) pBookMarkCode->dynamicCall("Select(void)");// 獲得書簽位置順序 pBookMarkCode->querySubObject("Range")->property("BookmarkID").toInt();// 獲得書簽名字 pBookMarkCode->property("Name").toString();

書簽的增刪改查

// 新建一個書簽,位置是當前光標所在位置 void WordManage::insertBookMark(const QString &name, int type, int count) {// 獲取所有的書簽QAxObject *pBookMarkCode = m_document->querySubObject("Bookmarks");QList<QVariant> list;list << name << m_word->querySubObject("Selection")->property("Range");// 新建書簽pBookMarkCode->dynamicCall("Add(QString, QVariant)", list);// 該行代碼是書簽明和書簽信息存儲到二叉樹中,主要用于獲得書簽內容的長度m_markMap.insert(name, TagInformation(Coordinate(currentRow(), currentCol()),type, count)); }// 刪除一個書簽,參數就是需要刪除書簽的名字,該函數會連同內容和書簽都刪除的 void WordManage::deleteBookMark(const QString &name) {if(m_document == nullptr){return;}// 獲取所有標簽QAxObject *pBookMarkCode = m_document->querySubObject("Bookmarks");// 如果不存在,就告訴客戶if(!pBookMarkCode->dynamicCall("Exists(QString)", name).toBool()){qDebug() << "please input existed bookmark";return;}// 獲取指定名稱的書簽QAxObject *bookMarkToBeDel = m_document->querySubObject("Bookmarks(QVariant)", name);if(bookMarkToBeDel){// 選擇該書簽bookMarkToBeDel->dynamicCall("Select(void)");// 選擇當前Active的Pane(如果什么也沒有選中,那么就是一個豎線---對應書簽的位置)QAxObject* selection = m_word->querySubObject("Selection");// 擴大選中的范圍QList<QVariant> mylist;mylist << 1 << m_markMap[name].getCount() << 0;selection->dynamicCall("MoveRight(QVariant, QVariant, QVariant)", mylist);// 刪除這個范圍中的內容(這里是文本內容)selection->dynamicCall("Delete(QVariant, QVariant)", mylist);// 刪除標簽對象,按照我想象的應該有,實際上,沒有并沒有產生什么錯誤// bookMarkToBeDel->dynamicCall("Delete(void)");}return; }void WordManage::updateBookMark(const QString &tag, const QString &paragraph) {if(m_document == nullptr){return;}// 請求所有的標簽QAxObject *pBookMarkCode = m_document->querySubObject("Bookmarks");// 判斷是否存在if(!pBookMarkCode->dynamicCall("Exists(QString)", tag).toBool()){qDebug() << "please input existed bookmark";return;}// 獲取指定標簽QAxObject *bookMarkToBeUpdate = m_document->querySubObject("Bookmarks(QVariant)", tag);if(bookMarkToBeUpdate){bookMarkToBeUpdate->dynamicCall("Select(void)");// 獲得選中的內容QAxObject* selection = m_word->querySubObject("Selection");TagInformation &tagInfo = m_markMap[tag];QList<QVariant> mylist;mylist << tagInfo.getType() << tagInfo.getCount();selection->dynamicCall("Delete(QVariant, QVariant)", mylist);selection->dynamicCall("InsertAfter(QString)", paragraph);tagInfo.setType(TagInformation::TagType::wdCharacter);tagInfo.setCount(paragraph.size());}// 不知道為何通過上面的操作將會把標簽刪除掉,因此在這里添加上insertBookMark(tag);return; }QString WordManage::queryBookMark(const QString &tag) {if(m_document == nullptr){return "";}QAxObject *pBookMarkCode = m_document->querySubObject("Bookmarks");if(!pBookMarkCode->dynamicCall("Exists(QString)", tag).toBool()){qDebug() << "please input existed bookmark";return "";}QAxObject *bookMarkToBeDel = m_document->querySubObject("Bookmarks(QVariant)", tag);if(bookMarkToBeDel){bookMarkToBeDel->dynamicCall("Select(void)");QAxObject* selection = m_word->querySubObject("Selection");QList<QVariant> mylist;mylist << 1 << 0;// 官方有這個操作,加了該行代碼就會拋異常,注釋掉后沒有發現問題// selection->dynamicCall("HomeKey(QVariant, QVariant)", mylist);mylist.clear();mylist << m_markMap[tag].getType() << m_markMap[tag].getCount() << 0;selection->dynamicCall("MoveRight(QVariant, QVariant, QVariant)", mylist);//qDebug() << "in function " << selection->property("Text").toString();return selection->property("Text").toString();}return ""; } m_word->querySubObject("Selection");

Use the Selection property to return the Selection object. If no object qualifier is used with the Selection property, Microsoft Word returns the selection from the active pane of the active document window.

總結

以上是生活随笔為你收集整理的QT中关于书签的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。