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(); }如下实例日志视图显示相同的应用程序的其他实例发送的消息。
#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(); //日志查看对象也被设置为应用程序的激活窗口。每次收到一条消息,该窗口将被提出并自动激活。 //每接收到的消息将显示在日志中。 //事件循环被输入。
源码包下载