add textfield (QT)

5 days ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 26 Mar 2025 22:16:53 +0100 (5 days ago)
changeset 523
0797c87a2c02
parent 522
bb0d05f45046
child 524
ce7a198b54b0

add textfield (QT)

ui/qt/text.cpp file | annotate | diff | comparison | revisions
ui/qt/text.h file | annotate | diff | comparison | revisions
--- a/ui/qt/text.cpp	Wed Mar 26 22:09:05 2025 +0100
+++ b/ui/qt/text.cpp	Wed Mar 26 22:16:53 2025 +0100
@@ -33,3 +33,59 @@
 #include "../common/document.h"
 
 
+
+
+/* ------------------------------ TextField ------------------------------ */
+
+UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs args) {
+    UiContainerPrivate *ctn = ui_obj_container(obj);
+    UI_APPLY_LAYOUT(ctn->layout, args);
+    
+    QLineEdit *textfield = new QLineEdit();
+    ctn->add(textfield, false);
+    
+    UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING);
+    if(var) {
+        UiString *value = (UiString*)var->value;
+        if(value->value.ptr) {
+            QString str = QString::fromUtf8(value->value.ptr);
+            textfield->setText(str);
+            if(value->value.free) {
+                value->value.free(value->value.ptr);
+            }
+            value->value.ptr = NULL;
+        }
+        
+        value->set = ui_textfield_set;
+        value->get = ui_textfield_get;
+        value->obj = textfield;
+    }
+    
+    return textfield;
+}
+
+char* ui_textfield_get(UiString *str) {
+    QLineEdit *textfield = (QLineEdit*)str->obj;
+    QString qstr = textfield->text();
+    
+    if(str->value.free) {
+        str->value.free(str->value.ptr);
+    }
+    QByteArray array = qstr.toUtf8();
+    const char *cstr = array.constData();
+    str->value.ptr = strdup(cstr);
+    str->value.free = free;
+    
+    return str->value.ptr;
+}
+
+void ui_textfield_set(UiString *str, const char *value) {
+    QLineEdit *textfield = (QLineEdit*)str->obj;
+    QString qstr = QString::fromUtf8(value);
+    textfield->setText(qstr);
+    
+    if(str->value.free) {
+        str->value.free(str->value.ptr);
+    }
+    str->value.ptr = NULL;
+}
--- a/ui/qt/text.h	Wed Mar 26 22:09:05 2025 +0100
+++ b/ui/qt/text.h	Wed Mar 26 22:16:53 2025 +0100
@@ -36,8 +36,10 @@
 
 // value implementations
 extern "C" {    
+    
+char* ui_textfield_get(UiString *str) ;
+void ui_textfield_set(UiString *str, const char *value);
 
-    
 }
 
 

mercurial