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

移动开发
本文介绍的是跨平台技术 QT 桌面活过来了,主要是针对桌面操作的,让你的桌面不在那么单调,使它更加有活力,那么先来看内容。

跨平台技术 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 桌面程序活过来了的内容介绍完了,希望本文读你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2015-07-30 17:00:01

乔老爷

2012-07-06 15:10:39

跨平台工具QtNokia

2020-09-23 14:33:01

Golang桌面开发GUI

2011-06-21 14:01:07

QT 界面库 Embedded

2023-08-29 09:16:53

ElectronForge

2011-06-30 14:16:25

QT 中文 乱码

2022-09-24 10:07:14

ElectronChromiumNode.js

2010-09-25 13:47:14

Java跨平台

2014-05-30 15:50:46

DIGIA嵌入式Qt

2009-10-14 09:41:52

托管服务

2012-09-04 10:12:19

IBMdw

2014-12-11 11:03:20

Qt跨平台开发

2011-06-23 14:27:48

QT QLibrary 动态库

2024-02-21 09:43:50

ElectronNode.js前端

2023-06-03 00:04:43

Electron版本安全

2023-08-16 00:52:31

Electron开发工具

2023-10-11 10:03:33

Electron桌面应用开发工具

2023-04-05 22:42:08

Electronsize工具

2023-12-06 09:02:56

Electron前端

2022-11-30 16:38:22

Electron开源
点赞
收藏

51CTO技术栈公众号