Vor einiger Zeit habe ich mehrere Artikel über die Verwendung der QtWinExtras-Bibliothek geschrieben, die den Zugriff auf spezielle Funktionen eröffnet, die nur für Windows verfügbar sind. Jetzt möchte ich ein paar Worte darüber sagen, wie man auch mit QML wiederholen kann. Dazu müssen wir ein Qt Quick-Projekt erstellen und das winextras-Modul im Projekt verbinden
import QtWinExtras 1.0
Und verwenden Sie 3 Objekte: TaskbarButton zum Erstellen und Verwalten eines Fortschrittsbalkens, ThumbnailToolBar zum Arbeiten mit Schaltflächen im Popup-Fenster der Taskleiste und JumpList (zum Arbeiten mit jumpList). Fügen Sie auch FileDialog für die vollständige Arbeit von jumpList hinzu.
Für TaskbarButton müssen Sie die id-Eigenschaften festlegen (um von außen auf dieses Objekt zuzugreifen), progress.visible: true. Zusätzlich können Sie das Symbol overlay.iconSource festlegen.
In ThumbnailToolBar erstellen wir die ThumbnailToolButton (von eins bis sieben) Buttons, setzen die Icons und schreiben die Klickverarbeitung.
In JumpList ist der letzte Abschnitt sichtbar, um die zuletzt geöffneten Dateien anzuzeigen, und häufig, um häufig geöffnete Dateien anzuzeigen.
JumpList { id: jumpList recent.visible: true frequent.visible: true }
Vergessen Sie nicht, dass die Dateierweiterungen, die in die jumpList fallen, in der Registrierung registriert werden müssen. Fügen Sie daher die Funktion AssociateFileTypes () zur Hauptdatei hinzu, wie im vorherigen Artikel. gezeigt.
Eine weitere merkwürdige Möglichkeit ist die Einstellung der Transparenz des Fensters. Dazu benötigen Sie das Objekt DwmFeatures. Seine Eigenschaft blurBehindEnabled macht das Fenster transparent, wenn ihr Wert wahr ist. Wenn Sie es auf false setzen, wird die Hintergrundfarbe schwarz. Ich stelle auch fest, dass die Transparenz mit der Eigenschaft opacity des Window-Objekts eingestellt werden kann. Es unterscheidet sich von blurBehindEnabled dadurch, dass letzteres nur 2 Zustände haben kann (transparent und opak) und nur den Hauptteil des Fensters transparent macht (ohne darauf platzierte Widgets), während opacity den Grad der Transparenz festlegt und das gesamte Fenster transparent macht alle Widgets und ein Rahmen. Weitere 4 leftGlassMargin-, rightGlassMargin-, topGlassMargin- und bottomGlassMargin-Eigenschaften sind für die Größe des zusätzlichen Rands von der linken, rechten, oberen bzw. unteren Seite des Fensters verantwortlich. Einzugswerte werden in Pixel angegeben. Die Standardwerte sind 0. Ich sehe die Anwendungsanwendung in diesen Eigenschaften nicht, aber ich habe der Vollständigkeit halber darüber geschrieben.
Main.qml
import QtQuick 2.6 import QtQuick.Window 2.2 import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.0 import QtWinExtras 1.0 Window { visible: true width: 640 height: 480 title: qsTr("Hello WinExtras") DwmFeatures { id: dwmFeatures blurBehindEnabled: true leftGlassMargin : 10 rightGlassMargin : 10 topGlassMargin : 10 bottomGlassMargin : 10 excludedFromPeek : false peekDisallowed : false flip3DPolicy: QtWin.FlipExcludeBelow } Button{ x:100 y:200 width:200 height: 100 text: "button" } TaskbarButton { id: taskbarButton //overlay.iconSource: "loading.png" overlay.accessibleDescription: "Loading" progress.visible: true progress.value: 50 } ThumbnailToolBar { ThumbnailToolButton { iconSource: "r.png"; tooltip: "Next"; onClicked: taskbarButton.progress.value = taskbarButton.progress.value+1 } ThumbnailToolButton { iconSource: "l.png"; tooltip: "Prep"; onClicked: taskbarButton.progress.value = taskbarButton.progress.value-1 } ThumbnailToolButton { iconSource: "pause.png"; tooltip: "Pause"; onClicked: taskbarButton.progress.setPaused(!taskbarButton.progress.paused) } ThumbnailToolButton { interactive: false; flat: true } ThumbnailToolButton { iconSource: "open.png"; tooltip: "OpenFile"; onClicked: fileDialog.open()} ThumbnailToolButton { iconSource: "exit.png"; tooltip: "Open"; onClicked: Qt.quit() } } JumpList { id: jumpList recent.visible: true frequent.visible: true //tasks.visible: true } FileDialog { id: fileDialog selectFolder: true title: "Please choose a file" folder: shortcuts.home onAccepted: { console.log("You chose: " + fileDialog.fileUrls) } } }
Main.cpp
clude <QFileInfo> #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QDir> #include <QSettings> static void associateFileTypes(const QStringList &fileTypes) { QString displayName = QGuiApplication::applicationDisplayName(); QString filePath = QCoreApplication::applicationFilePath(); QString fileName = QFileInfo(filePath).fileName(); //qDebug() << displayName << filePath << fileName; QSettings settings("HKEY_CURRENT_USER\\Software\\Classes\\Applications\\" + fileName, QSettings::NativeFormat); settings.setValue("FriendlyAppName", displayName); settings.beginGroup("SupportedTypes"); foreach (const QString& fileType, fileTypes) settings.setValue(fileType, QString()); settings.endGroup(); settings.beginGroup("shell"); settings.beginGroup("open"); settings.setValue("FriendlyAppName", displayName); settings.beginGroup("Command"); settings.setValue(".", QChar('"') + QDir::toNativeSeparators(filePath) + QString("\" \"%1\"")); } int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); app.setApplicationDisplayName("QtWinExtras Test"); associateFileTypes(QStringList(".txt")); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); }