2016-12-20 2 views
1

Gibt es eine Möglichkeit, ein einfaches Bearbeitungsfeld in reinem X11 C- oder C++ - Code zu haben?Bearbeitungsfeld auf X11

Mit "einfachen X11 C oder C++ Code" meine ich das Erstellen des Steuerelements auf einem XCreateSimpleWindow erstellten Fenster als das CreateWindow("edit"..) Äquivalent in Win32 API.

Wenn nicht, was sind meine Optionen, um ein einfaches Bearbeitungsfeld mit einem Minimum an Abhängigkeiten (d. H. Keine Qt bitte) für einen einfachen Eingabefeld-Dialog zu haben?

Antwort

3

Plain X11 hat keine solche Funktionalität - Es ist ein Low-Level-Windowing-Toolkit (Öffnen und Verwalten von Fenstern, Empfangen von Eingabeereignissen, Zeichnung zu Fenstern).

Wenn Sie bereit sind, ein solches Bearbeitungsfenster aus den verfügbaren Primitiven zu schreiben, geht es Ihnen gut. Wenn nicht, müssen Sie ein Toolkit verwenden, das es für Sie tut. Der einfachste und leichteste, der solche Funktionen bietet, wären vermutlich Athena-Widgets (falls Sie nicht besonders wählerisch sind).

2

X11 ist ein sehr niedriges Protokoll. Es bietet die Möglichkeit, einzelne Fenster zu erstellen, auf sie zu zeichnen und einzelne Eingabeereignisse zu empfangen, und nicht mehr. Das ist es.

Die Aufgabe der Bereitstellung von High-Level-Benutzerschnittstelle, wie Bearbeitungsfelder, ist für höhere Toolkits, wie Qt oder Gtk. Das sind die am häufigsten verwendeten Toolkits. Es gibt auch ein paar weniger beliebte.

Aber die Quintessenz ist, dass es keine "Bearbeitungssteuerelemente" jeglicher Art gibt, die Sie mit Xlib erhalten, der Bibliothek, die Sie verwenden, um X11-Protokoll zu sprechen. Wenn die einzige von Ihnen gewünschte Abhängigkeit Xlib ist, liegt es an Ihnen, das Bearbeitungssteuerelement mit Ihrem eigenen Code zu implementieren. Wenn Sie keine gängigen Schriftbibliotheken wie fontconfig und freetype verwenden möchten, müssen Sie den Code schreiben, um die integrierten Schriftarten des X-Servers aufzulisten, die Tastatureingabe zu verarbeiten und das Bearbeitungssteuerelement zu zeichnen. Allein die Aufgabe, die etwas obskuren Tastaturkodierungen, die in X11 verwendet werden, in etwas Brauchbares wie UTF-8 oder Unicode zu übersetzen, wird einige hundert Zeilen Code erfordern.

Also die Antwort hier ist: Verwenden Sie Qt oder Gtk.

1

Als Low-Level-Alternative für X-Widgets können Sie Xaw-Bibliothek oder Motif-Bibliothek oder Xforms-Bibliothek verwenden.

+0

"Low level" ist ein Wort dafür. Ein anderer ist "veraltet". Alle diese Toolkits sind Jahrzehnte alt und werden heutzutage im Wesentlichen nicht mehr genutzt (außerhalb der Rückwärtskompatibilität). Sie sind eine sehr schlechte Wahl für die Neuentwicklung. – duskwuff

+0

Vielleicht gibt es jedoch in der Welt viel mehr als viele Desktop-PCs. – ulix

+1

Sie eignen sich auch nicht besonders gut für eingebettete Systeme, zum Beispiel erwartet die Xaw-Bildlaufleiste eine Drei-Tasten-Maus. – duskwuff