您的位置:首页 > 编程语言 > Go语言

开源项目之跨平台的词典软件 GoldenDict

2012-09-19 20:16 225 查看
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();
//日志查看对象也被设置为应用程序的激活窗口。每次收到一条消息,该窗口将被提出并自动激活。
//每接收到的消息将显示在日志中。
//事件循环被输入。


学习的目标是成熟!~~~

源码包下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: