2016-11-01 18 views
0

Ich schreibe ein Qt-Widget, das in .NET-Anwendung integriert werden sollte. Ich habe Artikel this verwendet, um eine Wrapper-Klasse für WPF zu schreiben. Das Problem, mit dem ich konfrontiert wurde, ist, dass das Widget nicht den gesamten zugewiesenen Speicherplatz belegt. Es ist leicht auf dem angehängten Bild sichtbar.Qt zu .Net-Integration: Größe ändern Problem

.Net resize issue

Ich frage mich, ob es eine einfache Lösung für dieses Problem ist, die nicht die Verwendung von COM/ActiveX mit sich bringt, weil ich gut sichtbar in .Net meine Klasse halten möchte?

+0

Der von Ihnen bearbeitete Artikel bietet eine unnötige Umweg über native Windows und dergleichen. Das ist ein Performance-Killer und wird nicht benötigt. Qt kann Ihr Widget in ein 'QImage' rendern, alles was Sie brauchen ist, das in ein WPF-Steuerelement zu integrieren; Ebenso können Sie die Ereignisse aus dem WPF-Steuerelement übersetzen und an Ihr 'QWidget' übergeben. –

+0

@Kuba Interessant, aber dieser Ansatz scheint auch ziemlich indirekt zu sein. –

+0

Es ist nicht wirklich so indirekt, intern macht WPF mehr oder weniger dasselbe. Moderne UIs rendern ziemlich gut in Bitmaps und bilden die Bitmaps und etwas Geometrie entweder mit der CPU oder mit der GPU ... –

Antwort

0

Sie werden COM-Objekte und Schnittstellen verwenden müssen, um die Arbeit zu erledigen. Es gibt keine Möglichkeit, das Formular zu bearbeiten, um eine vorhandene Anwendung einzubetten. Es gibt viele Informationen dazu auf MSDN und Stackoverflow, aber diese Implementierung kommt nicht ohne unerwünschte Seiteneffekte, eines davon ist ein gutes integriertes Look and Feel.

Sie können die eingebettete win32 Qt-Anwendung/Widget zentrieren und dann Ihren WPF-Container entsprechend farbig gestalten, aber da Sie noch mit dem Schreiben des Qt-Widgets beschäftigt sind, würde ich Ihnen raten, Ihre gesamte Anwendung in WPF und C# zu machen ein viel besseres Aussehen und Gefühl, sowie sparen Sie Lizenzkosten für Qt kommerzielle Nutzung. Wenn Sie WPF verwenden, machen Sie Ihre Anwendung ohnehin abhängig von Windows. Wenn Sie Qt für die C++ - Performance-Vorteile verwenden, schreiben Sie lieber kleine C++ - CLI-Anwendungen und führen Sie diese bei Bedarf über C# -Code aus.

+0

[This] (http://doc.qt.io/qt-5/activeqt-dotnet.html) Artikel scheint nicht zu zwingen, nur COM zu verwenden. Dort wird gesagt, dass Sie die Wahl haben, ob Sie eigene Wrapper schreiben oder ActiveQt verwenden. –

+0

Ich verstehe vollständig, was Sie zu tun versuchen und dass es möglich ist, aber warum möchten Sie das tun und Ihr Leben schwierig machen? Warum zu völlig unterschiedlichen Technologien greifen, wenn beide (meistens) das können, was der andere kann? Ich versuche nicht, witzig zu sein, ich versuche nur, deine Perspektive auf Dinge zu bekommen. – Elmar

+0

Ich muss herausfinden, wie schwer es ist, ein Qt-Widget in .NET-Anwendung einzubetten und welche Probleme es verursacht. Was ich brauche, ist eine 3D-Oberflächengrafik-Visualisierung (aus dem Qt Data Visualisierungsmodul). Ich weiß, dass es C# -basierte Lösungen wie SciChart gibt, aber es passt nicht zu unseren Bedürfnissen. Und da das Unternehmen denkt, Qt-Lizenz sowieso zu kaufen, wurde ich gebeten, diese kleine Forschung durchzuführen. –