Videoclip mit Standardanwendung öffnen lassen
-
OK danke. Also bei mir steht "UTF-8".
-
Das erklärt dann zumindest mal das Problem mit den Umlauten. Weil die halt in UTF-8 ganz anders aussehen als in z.B. CP1252 (was die übliche ANSI CodePage für Windows hierzulande ist).
Ein Weg das zu fixen wäre natürlich Unicode zu verwenden.
Erklärt aber immer noch nicht das Problem mit den "...".
-
@hustbaer sagte in Videoclip mit Standardanwendung öffnen lassen:
Das erklärt dann zumindest mal das Problem mit den Umlauten. Weil die halt in UTF-8 ganz anders aussehen als in z.B. CP1252 (was die übliche ANSI CodePage für Windows hierzulande ist).
Ein Weg das zu fixen wäre natürlich Unicode zu verwenden.
Erklärt aber immer noch nicht das Problem mit den "...".
Für die 3 Punkte gibt es auch ein eigenständiges Zeichen statt 3 einzelne Punkte "zeichen".
Da DerDaVinciKot Qt verwendet wiso dann direkt die WinAPI ansprechen. Denn Qt bietet via QDesktopServices::openUrl das gleiche an, was auch ShellExecute von der WinAPI anbietet
und da QDesktopServices::openUrl QString verwendet gibt es dann keine Probleme mit der Zeichenkodierung da QString UTF16 verwendet bzw. beim Aufruf der nativen funktion den string passend konvertiert
-
@hustbaer sagte in Videoclip mit Standardanwendung öffnen lassen:
Erklärt aber immer noch nicht das Problem mit den "...".
Schiebe ich auf die fehlenden Anführungszeichen.
@DerDaVinciKot Speichere dein Source-file als ANSI und
system()
wird mit vielen Zeichen funktionieren.
Aber wie andere schon lange sagen: Nimm nichtsystem()
sondern zB.ShellExecute()
das versteht auch UNICODE.
-
Danke für Eure Mühe!
Ich habes es jetzt mal mit QUrl versucht. Doch irgendwo stimmt was nicht. Es passiert nichts:
QDesktopServices::openUrl(QUrl(ApplikationPfad + "\\Movies\\testclip.mp4", QUrl::TolerantMode));
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
ApplikationPfad
Und was steht da drin? file:// ?
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
"\Movies\testclip.mp4"
Die Pfade in einer URL sind mit /
-
QUrl::fromLocalFile
: Returns a QUrl representation of localFile, interpreted as a local file. This function accepts paths separated by slashes as well as the native separator for this platform.
-
@firefly sagte in Videoclip mit Standardanwendung öffnen lassen:
Da DerDaVinciKot Qt verwendet wiso dann direkt die WinAPI ansprechen. Denn Qt bietet via QDesktopServices::openUrl das gleiche an, was auch ShellExecute von der WinAPI anbietet
und da QDesktopServices::openUrl QString verwendet gibt es dann keine Probleme mit der Zeichenkodierung da QString UTF16 verwendet bzw. beim Aufruf der nativen funktion den string passend konvertiertEh OK
Ich hab nie was gegenQDesktopServices::openUrl
gesagt. Nur gegensystem
. Empfohlen hab ich es nicht, weil ich on Qt keine Ahnung habe. Dafür von WinAPI, daher meine EmpfehlungShellExecute (Ex)
zu verwenden.
-
@manni66, danke für den Hinweis. Ich habs geändert, leider ohne Erfolg.
ApplikationPfad ist das Verzeichnis der Anwendung und wird wie folgt ermittelt:
std::string strTemp = QCoreApplication::applicationDirPath().toStdString(); ApplikationPfad = QString::fromStdString(strTemp);
-
@DerDaVinciKot Ich weiß nicht ob Du es inzwischen hinbekommen hast, aber
#include <QApplication> #include <QUrl> #include <QDesktopServices> int main(int argc, char *argv[]) { QApplication app{ argc, argv }; auto app_dir{ QCoreApplication::applicationDirPath() }; auto url{ QUrl::fromLocalFile(app_dir + QStringLiteral("/Dies ist ein ... äh ... Beispieltitel.jpg")) }; QDesktopServices::openUrl(url); }
tut bei mir.
-
@Swordfish sagte in Videoclip mit Standardanwendung öffnen lassen:
auto app_dir = QCoreApplication::applicationDirPath(); QUrl url{ url.fromLocalFile(app_dir + QStringLiteral("/Dies ist ein ... äh ... Beispieltitel.jpg")) }; QDesktopServices::openUrl(url);
Dein Code funktioniert bei mir!
Aber komischerweise funktioniert es nicht, wenn ichQString app_dir = QCoreApplication::applicationDirPath();
in den Konstruktor packe und den Rest
QUrl url{ url.fromLocalFile(app_dir + ```cpp QStringLiteral("/Dies ist ein ... äh ... Beispieltitel.jpg")) }; QDesktopServices::openUrl(url);
In einen Button-Klick-Ereignis. Die Variable app_dir habe ich natürlich vorher in der Header-Datei deklariert:
private: QString app_dir;
Tue ich aber alle Anweidungen zusammen in das Button-Klick-Ereignis, dann funktioniert es! Hat jemand eine Idee?
-
@DerDaVinciKot
Wenn das so im Kontruktor steht:QString app_dir = QCoreApplication::applicationDirPath();
app_dir ist hier lokal.
-
Oh man bin ich blind!
Vielen Dank, das war das Problem. Jetzt funktionieren auch Titel mit Umlauten und so viele Punkte wie ich mag
Ich hätte gedacht, das Qt mir einen Hinweis darauf gibt dass es bereits eine Variable mit selber Bezeichnung gibt. Da muss ich wohl in Zukunft genauer drauf achten!
Was bewirkt eigentlich folgendes:
applikationPfad + QStringLiteral
? Ich versteh die Erklärung aus der Qt-Dokumentation leider nicht ganz.
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
Ich versteh die Erklärung aus der Qt-Dokumentation leider nicht ganz.
Hilft Strings and encodings in Qt?
-
Ja danke, das hat mir schon weitergeholfen. Ich kenne mich nur nicht so ganz mit den Formatierung aus, da muss ich mich nochmal reinfuchsen.
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
Ich hätte gedacht, das Qt mir einen Hinweis darauf gibt dass es bereits eine Variable mit selber Bezeichnung gibt.
Das hat mit Qt nicht zu tun, wenn dann könnte dieser Hinweis vom Compiler kommen.
Solche Warnungen gibt es auch je nach Compiler, aber normalerweise sind sie nicht per Default an.
Bit GCC und ich glaube auch Clang kannst du-Wshadow
verwenden. Und beim Visual Studio Compiler gibt es folgende Warnings die du aktivieren kannst:
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4456?view=msvc-160
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4457?view=msvc-160
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4458?view=msvc-160
-
Danke für die Infos. Ich nutze MinGW. Soweit ich weiß nutzt der ja den GCC-Compiler. Ich kann also selber entscheiden welchen Compiler ich nutze? Muss ich dazu das "Kit" wechseln oder nur den Compiler? Und was hat es eigentlich mit dem Kit auf sich? Das frage ich mich schon länger. Ist es so eine Art "Pack" von verschiedenen Dingen wie Compiler, Debugger usw. damit man das alles nicht einzeln laden muss?
Mit VB.Net habe ich einige Jahre gearbeitet als ich mit dem Programmieren anfing. Das hatte mir damals große Freude bereitet und es war alles durchaus leichter als mit C++ und Qt. Also könnte ich als Beispiel den Visal Studio Compiler für mein C++-Code nutzen? Wie ist das möglich? Ich dachte immer Visual Studio kommt nur mit VB, C# usw. zurecht? Sorry für die viele Fragerei aber ich habe keine andere Adresse wohin ich fragen könnte
-
-
Visual Studio kommt recht gut mit C++ zurecht, speziell seit VS 2017 - da hat MS angefangen etwas mehr Gas zu geben um zügig in Richtung Standard Compilance zu fahren.
Was Qt und MSVC (Visual Studio C(++) Compiler) angeht: ich weiss nur dass es geht.
Wie genau und wie gut sich damit arbeiten lässt kann ich nicht sagen. Müsstest du dir selbst ergoogeln. Ist ja nicht so als ob das alles streng geheim wäre