1. 程式人生 > >開源專案之跨平臺的詞典軟體 GoldenDict

開源專案之跨平臺的詞典軟體 GoldenDict

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();
//日誌檢視物件也被設定為應用程式的啟用視窗。每次收到一條訊息,該視窗將被提出並自動啟用。
//每接收到的訊息將顯示在日誌中。
//事件迴圈被輸入。


學習的目標是成熟!~~~

原始碼包下載