GoldenDict 是一款不錯的、與 StarDict(星際譯王)類似的詞典軟體。它使用 WebKit 作為渲染核心,格式化、顏色、映像、連結等支援一應俱全;支援多種詞典檔案格式,包括 Babylon 的 .BGL 檔案、StarDict 的 .ifo/.dict/.idx/.syn 檔案、Dictd 的 .index/.dict(.dz) 檔案、ABBYY Lingvo 的 .dsl/.lsa/.dat 檔案;可查詢 Wikipedia、Wiktionary 等基於 MediaWiki 的 Wiki 網站,且能夠通過模板 Url 模式來使用其他的線上詞典網站;具有基於 Hunspell 的 morphology 系統;包含完整的 Unicode 支援、scan 彈窗及全域熱鍵等功能。效果如圖:
QtSingleApplication組件提供支援應用程式,對於某些應用程式,它是有非常有用的,甚至是關鍵的。該應用程式應該啟用並啟動已經啟動並執行執行個體,並且可以執行請求的操作,例如載入一個檔案。
QtSingleApplication類提供了一個介面來檢測正在啟動並執行執行個體,該執行個體發送命令字串。對於控制台(非GUI)應用程式,QtSingleCoreApplication變種,從而避免依賴於QtGui。
如下是顯示了如何將現有的應用程式使用QtSingleApplication:
// Original int main(int argc, char **argv) { QApplication app(argc, argv); MyMainWidget mmw; mmw.show(); return app.exec(); } // Single instance int main(int argc, char **argv) { QtSingleApplication app(argc, argv); if (app.isRunning()) return !app.sendMessage(someDataString); MyMainWidget mmw; app.setActivationWindow(&mmw); mmw.show(); return app.exec(); }
如下執行個體日誌視圖顯示相同的應用程式的其他執行個體發送的訊息。
這個例子示範了如何使用的QtSingleApplication類檢測和交流使用的sendMessage(API)的應用程式的運行執行個體。一個QTextEdit日誌顯示接收到的訊息(messageReceived)。
#include <qtsingleapplication.h> #include <QtGui/QTextEdit> class TextEdit : public QTextEdit { Q_OBJECT public: TextEdit(QWidget *parent = 0) : QTextEdit(parent) {} public slots: void append(const QString &str) { QTextEdit::append(str); } }; #include "main.moc" int main(int argc, char **argv) { QtSingleApplication instance(argc, argv);//立即建立一個QtSingleApplication對象 if (instance.sendMessage("Wake up!")) return 0;//只允許一個執行個體 TextEdit logview; logview.setReadOnly(true); logview.show();//建立表單。~ instance.setActivationWindow(&logview); QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), &logview, SLOT(append(const QString&))); return instance.exec();//日誌查看對象也被設定為應用程式的啟用視窗。每次收到一條訊息,該視窗將被提出並自動啟用。//每接收到的訊息將顯示在日誌中。//事件迴圈被輸入。
學習的目標是成熟。~~~
源碼包下載