如今,咱们将给出有关 Qt 的一些跨平台技术。利用这些技术,可以让你的应用程序看起来更加符合平台的习惯。此次内容不是一个完整的例子,而是不少小的条目,但愿你们了解到这些简单的 tip,从而能够方便的应用到本身的程序中。不少 GUI 的问题就在于一个知道不知道。你知道,就能够很方便的实现,不知道,恐怕就会变得很笨拙。今天的目的,不在于例子,而在于让你“知道”。浏览器
1、显示内容修改缓存
有时,咱们须要制做一个文本编辑器。通常文本编辑器若是内容有所修改,会在标题栏有一个提示,好比增长一个 * 等。这种功能是 Qt 已经为咱们提供好的。例如:编辑器
当咱们在文本框中输入文字时,窗口会显示一个 *,代表内容已经被修改,提供用户保存。其实这种实现很简单。Qt 的 setWindowTitle() 函数有一个占位符,能够预留出 * 的位置。ide
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- this->setWindowTitle("untitled [*]");
- connect(ui->textEdit->document(), SIGNAL(modificationChanged(bool)), SLOT(setWindowModified(bool)));
- }
相似于上面的代码。窗口标题设置为 untitled [*],而 [*] 就是未来 * 出现的地方。最后,咱们将 QTextEdit 的内容改变信号同 setWindowModified() 槽链接起来。只要 setWindowModified() 设置为 true,那么,这个内容改编的 * 就会自动为咱们显示出来。函数
2、让程序提醒用户ui
一般咱们会有这么一种需求:咱们的程序只能运行一个实例。当用户已经运行以后,若是用户试图再次运行同一个程序,则会让程序有一个提醒功能。在 Windows 下是任务栏的窗口图标闪烁, Mac 下则是让 Dash 上的图标跳动起来:this
这种功能是与平台相关的,若是咱们要编写这样的程序,不得不调用系统 API。好在 Qt 也为咱们提供了这一功能,那就是 QApplication::alert() 函数。这个函数是 QApplication 类的一个 static 函数,所以,咱们能够在任何位置使用。这个函数的做用就是让你的程序有这样的一种提醒功能。spa
3、系统托盘操作系统
现代操做系统通常都会有系统托盘这个功能区。Windows、KDE 等等都有,Mac 系统虽然没有,可是有一个很相似的功能,就是在程序右上角能够浮现提示。3d
要实现这个功能,Qt 为咱们提供了 QSystemTrayIcon 类。具体的用法,你们能够参考文档。不过须要提醒一点的是,Mac 的图标必须是黑白两色的。
4、获取存储位置
若是咱们想使用本身的程序保存文件,通常都要有一个默认的存储位置。通常来讲,Windows 的程序每每默认是在个人文档里面。咱们如何获取这个存储路径呢?Qt 有一个很方便的 QDesktopServices 类。这个类里面有一个 static 的函数:
- QString QDesktopServices::storageLocation(StandardLocation type)
利用这个函数,咱们就能够得到好比桌面、音乐、缓存等等的默认路径。这样,咱们的程序就能够和系通通一块儿来了。
5、调用系统默认程序打开连接
有时候咱们但愿用系统默认程序打开连接。好比,调用默认浏览器打开网页,调用默认邮件客户端发送邮件。要实现这种功能,咱们就要使用 QDesktopServices::openUrl() 这个函数。若是你要打开以 mailto 开头的连接,那么就会自动调用系统默认的邮件处理程序。