分享

跨平台技术 QT 桌面程序活过来了

 QomoIT 2014-04-10

跨平台技术 QT 桌面活过来了是本文将要介绍的内容,现在,我们将给出有关 Qt 的一些跨平台技术。利用这些技术,能够让你的应用程序看起来更加符合平台的习惯。这次内容不是一个完整的例子,而是很多小的条目,希望大家了解到这些简单 的 tip,从而可以方便的应用到自己的程序中。很多 GUI 的问题就在于一个知道不知道。你知道,就可以很方便的实现,不知道,恐怕就会变得很笨拙。今天的目的,不在于例子,而在于让你“知道”。

一、显示内容修改

有时,我们需要制作一个文本编辑器。一般文本编辑器如果内容有所修改,会在标题栏有一个提示,比如增加一个 * 等。这种功能是 Qt 已经为我们提供好的。例如:

跨平台技术 qt 桌面程序活过来了 

跨平台技术 qt 桌面程序活过来了

当我们在文本框中输入文字时,窗口会显示一个 *,表明内容已经被修改,提供用户保存。其实这种实现很简单。Qt 的 setWindowTitle() 函数有一个占位符,可以预留出 * 的位置。

  1. MainWindow::MainWindow(QWidget *parent) :    
  2.     QMainWindow(parent),    
  3.     ui(new Ui::MainWindow)    
  4. {    
  5.     ui->setupUi(this);    
  6.     this->setWindowTitle("untitled [*]");    
  7.     
  8.     connect(ui->textEdit->document(), SIGNAL(modificationChanged(bool)), SLOT(setWindowModified(bool)));    
  9. }   

类似于上面的代码。窗口标题设置为 untitled [*],而 [*] 就是将来 * 出现的地方。最后,我们将 QTextEdit 的内容改变信号同 setWindowModified() 槽连接起来。只要 setWindowModified() 设置为 true,那么,这个内容改编的 * 就会自动为我们显示出来。

二、让程序提醒用户

通常我们会有这么一种需求:我们的程序只能运行一个实例。当用户已经运行之后,如果用户试图再次运行同一个程序,则会让程序有一个提醒功能。在 Windows 下是任务栏的窗口图标闪烁, Mac 下则是让 Dash 上的图标跳动起来:

跨平台技术 qt 桌面程序活过来了

这种功能是与平台相关的,如果我们要编写这样的程序,不得不调用系统 API。好在 Qt 也为我们提供了这一功能,那就是 QApplication::alert() 函数。这个函数是 QApplication 类的一个 static 函数,因此,我们可以在任何位置使用。这个函数的作用就是让你的程序有这样的一种提醒功能。

三、系统托盘

现代操作系统一般都会有系统托盘这个功能区。Windows、KDE 等等都有,Mac 系统虽然没有,但是有一个很类似的功能,就是在程序右上角可以浮现提示。

跨平台技术 qt 桌面程序活过来了

要实现这个功能,Qt 为我们提供了 QSystemTrayIcon 类。具体的用法,大家可以参考文档。不过需要提醒一点的是,Mac 的图标必须是黑白两色的。

四、获取存储位置

如果我们想使用自己的程序保存文件,一般都要有一个默认的存储位置。一般来说,Windows 的程序往往默认是在我的文档里面。我们如何获取这个存储路径呢?Qt 有一个很方便的 QDesktopServices 类。这个类里面有一个 static 的函数:

QString QDesktopServices::storageLocation(StandardLocation type) 
利用这个函数,我们就可以获得比如桌面、音乐、缓存等等的默认路径。这样,我们的程序就可以和系统统一起来了。

五、调用系统默认程序打开链接

有时候我们希望用系统默认程序打开链接。比如,调用默认浏览器打开网页,调用默认邮件客户端发送邮件。要实现这种功能,我们就要使用 QDesktopServices::openUrl() 这个函数。如果你要打开以 mailto 开头的链接,那么就会自动调用系统默认的邮件处理程序

小结:跨平台技术 QT 桌面程序活过来了的内容介绍完了,希望本文读你有所帮助!

【编辑推荐】

【责任编辑:李程站 TEL:(010)68476606】

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多