5 days ago
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; +}