Qt Windows Extras 概述

Qt Windows Extras 提供使您能夠使用各種 Windows 特定函數的類和函數。例如:可以將 Qt 對象轉換成 Windows 對象句柄和操縱 DWM (桌麵窗口管理器) 玻璃框。

此外,可以使用 Windows 7 引入的特徵,譬如 Aero Peek、跳轉列錶、任務欄按鈕進度指示器或縮略工具欄。

類型轉換

The QtWin 名稱空間提供函數來轉換 Qt 類對象,譬如 QPixmap or QImage 成 Windows HBITMAP 或 HICON 句柄,反之亦然。

DWM 和玻璃框

可以確定窗口是否包括在 DWM (桌麵窗口管理器) Flip3D 渲染中。

可以輕鬆操縱 Windows Vista 首次引入的玻璃框,使用 QtWin::extendFrameIntoClientArea () 和 QtWin::enableBlurBehindWindow () functions. Windows 8 lost the glass effect, but applications can still integrate their windows into the system frame to visually separate window controls from the rest of the window or to focus the user's attention on window content.

"Glass frame extended into client area of a window"

Aero Peek

Windows 7 Aero Peek feature gives the users the powers of X-ray vision that enable them to peek past all open windows straight at the desktop and the gadgets placed there. They can view the contents of a window without actually switching to it. You can enable Aero Peek for a gadget-like window or for a window that constantly displays monitoring data.

可以使用 QtWin::setWindowExcludedFromPeek () 函數以排除 Aero Peek 應用程序窗口。

注意: 默認情況下,Aero Peek 在 Windows 8 中是被禁用的,但用戶可以啓用。

"A window excluded from Aero Peek"

Taskbar

The taskbar provides users with access to applications that are open on the desktop. Windows automatically creates buttons on the taskbar for accessing application windows. Windows 7 adds new features to the taskbar buttons that are discussed in the following sections.

疊加圖標和進度指示器

可以使用 QWinTaskbarButton class to set an overlay icon and the QWinTaskbarProgress class to display a progress indicator on a taskbar button. An overlay icon indicates change in the state of the application. A progress indicator shows how time-consuming tasks are progressing.

Taskbar Button

任務欄範例

以下範例代碼闡明如何使用 QWinTaskbarButton and QWinTaskbarProgress 類去調節任務欄按鈕的外觀:

    QWinTaskbarButton *button = new QWinTaskbarButton(widget);
    button->setWindow(widget->windowHandle());
    button->setOverlayIcon(QIcon(":/loading.png"));
    QWinTaskbarProgress *progress = button->progress();
    progress->setVisible(true);
    progress->setValue(50);
					

跳轉列錶

應用程序可以使用跳轉列錶為用戶提供對文件的更快訪問,或顯示任務或命令的快捷方式。

Jump List

  • Destinations — categorized shortcuts to files and URLs that the application can handle and even links to other applications. Windows provides two standard categories that can be added to the custom Jump List, in addition to the ones that the application can create itself.
  • Recent and Frequent — so called known categories that are populated automatically by Windows when the application uses the QFileDialog::getOpenFileName () function or when the application is launched to open a file from the Windows shell.
  • Tasks — shortcuts to application functionality. An application can display its most frequently used context-independent functions on task lists.

注意: To be able to add destinations to its Jump Lists, the application should associate itself with the file types it can handle.

跳轉列錶範例

The following example code illustrates how to use the classes in the QWinJumpList and QWinJumpListItem classes to implement Jump Lists:

    QWinJumpList jumplist;
    jumplist.begin();
    jumplist.setKnownCategoryShown(QWinJumpList::RecentCategory);
    jumplist.beginTasks();
    QWinJumpListItem *newProject = new QWinJumpListItem(QWinJumpListItem::Link);
    newProject->setTitle(tr("Create new project"));
    newProject->setFilePath(QDir::toNativeSeparators(QCoreApplication::applicationFilePath()));
    newProject->setArguments(QStringList("--new-project"));
    jumplist.addItem(newProject);
    jumplist.addLink(tr("Launch SDK Manager"), QDir::toNativeSeparators(QCoreApplication::applicationDirPath()) + "\\sdk-manager.exe");
    jumplist.commit();
					

縮略圖工具欄

Applications can embed a toolbar in the thumbnail of a window, which is shown when hovering over its taskbar icon. A thumbnail toolbar may provide quick access to the window's commands without requiring the user to restore or activate the window.

Media player thumbnail toolbar

縮略圖工具欄範例

The following example code illustrates how to use the functions in the QWinThumbnailToolBar and QWinThumbnailToolButton 類以實現縮略圖工具欄:

    QWinThumbnailToolBar *thumbbar = new QWinThumbnailToolBar(widget);
    thumbbar->setWindow(widget->windowHandle());
    QWinThumbnailToolButton *settings = new QWinThumbnailToolButton(thumbbar);
    settings->setToolTip("Settings");
    settings->setIcon(":/settings.png");
    settings->setDismissOnClick(true);
    connect(settings, SIGNAL(clicked()), settingsPage, SLOT(show()));
    QWinThumbnailToolButton *playPause = new QWinThumbnailToolButton(thumbbar);
    playPause->setToolTip("Play/Pause");
    playPause->setIcon(":/play.png");
    connect(playPause, SIGNAL(clicked()), mediaPlayer, SLOT(play()));
    thumbbar->addButton(settings);
    thumbbar->addButton(playPause);