📄 ctextbox.cpp
字号:
BEGIN_PROPERTY(CCOMBOBOX_text) int pos; if (READ_PROPERTY) GB.ReturnNewZeroString(TO_UTF8(COMBOBOX->currentText())); else { QString text = QSTRING_PROP(); if (COMBOBOX->editable()) COMBOBOX->lineEdit()->setText(text); // A faire lorsque la combo s'ouvre pos = CTextBox::find(COMBOBOX, text); //if (pos >= 0) COMBOBOX->setCurrentItem(pos); }END_PROPERTYBEGIN_PROPERTY(CCOMBOBOX_length) GB.ReturnInteger(COMBOBOX->currentText().length());END_PROPERTYBEGIN_PROPERTY(CCOMBOBOX_read_only) if (READ_PROPERTY) GB.ReturnBoolean(!COMBOBOX->editable()); else combo_set_editable(_object, !VPROP(GB_BOOLEAN));END_PROPERTYBEGIN_METHOD(CCOMBOBOX_get, GB_INTEGER index) long index = VARG(index); if (index < 0 || index >= (int)COMBOBOX->count()) { GB.Error("Bad index"); return; } THIS->index = index; RETURN_SELF();END_METHODBEGIN_PROPERTY(CCOMBOBOX_item_text) if (READ_PROPERTY) GB.ReturnNewZeroString(COMBOBOX->text(THIS->index)); else { COMBOBOX->blockSignals(true); COMBOBOX->changeItem(QSTRING_PROP(), THIS->index); COMBOBOX->blockSignals(false); }END_PROPERTYBEGIN_METHOD(CCOMBOBOX_add, GB_STRING item; GB_INTEGER pos) COMBOBOX->blockSignals(true); COMBOBOX->insertItem(QSTRING_ARG(item), VARGOPT(pos, -1)); if (THIS->sorted) COMBOBOX->listBox()->sort(); COMBOBOX->blockSignals(false);END_METHODBEGIN_METHOD(CCOMBOBOX_remove, GB_INTEGER pos) COMBOBOX->blockSignals(true); COMBOBOX->removeItem(VARG(pos)); COMBOBOX->blockSignals(false);END_METHODBEGIN_PROPERTY(CCOMBOBOX_sorted) if (READ_PROPERTY) GB.ReturnBoolean(THIS->sorted); else { THIS->sorted = VPROP(GB_BOOLEAN); if (THIS->sorted) COMBOBOX->listBox()->sort(); }END_METHODBEGIN_PROPERTY(CCOMBOBOX_count) GB.ReturnInteger(COMBOBOX->count());END_PROPERTYBEGIN_PROPERTY(CCOMBOBOX_index) if (READ_PROPERTY) GB.ReturnInteger(COMBOBOX->currentItem()); else setCurrentItem(_object, VPROP(GB_INTEGER));END_PROPERTYBEGIN_PROPERTY(CCOMBOBOX_current) THIS->index = COMBOBOX->currentItem(); if (THIS->index < 0) GB.ReturnNull(); else RETURN_SELF();END_PROPERTY/*BEGIN_PROPERTY(CCOMBOBOX_mouse) if (READ_PROPERTY) GB.ReturnInteger(COMBOBOX->cursor().shape()); else { if (COMBOBOX->editable()) COMBOBOX->lineEdit()->setCursor(PROPERTY(long)); COMBOBOX->setCursor(PROPERTY(long)); }END_METHOD*/BEGIN_METHOD(CCOMBOBOX_find, GB_STRING item) GB.ReturnInteger(CTextBox::find(COMBOBOX, QSTRING_ARG(item)));END_METHODBEGIN_PROPERTY(CCOMBOBOX_list) if (READ_PROPERTY) GB.ReturnNewZeroString(TO_UTF8(CTextBox::getAll(COMBOBOX))); else { CTextBox::setAll(COMBOBOX, QSTRING_PROP()); if (THIS->sorted) COMBOBOX->listBox()->sort(); }END_PROPERTY/*************************************************************************** class MyComboBox***************************************************************************/MyComboBox::MyComboBox(QWidget *parent) : QComboBox(false, parent){ calcMinimumHeight();}void MyComboBox::fontChange(const QFont &font){ QWidget::fontChange(font); calcMinimumHeight();}void MyComboBox::calcMinimumHeight(){ QFontMetrics fm = fontMetrics(); if (editable()) setMinimumHeight(fm.lineSpacing() + height() - lineEdit()->height()); else setMinimumHeight(fm.lineSpacing() + 2);}/*************************************************************************** class CTextBox***************************************************************************/CTextBox CTextBox::manager;void CTextBox::event_change(void){ RAISE_EVENT(EVENT_Change);}void CTextBox::event_activate(void){ RAISE_EVENT(EVENT_Activate);}void CTextBox::event_click(){ RAISE_EVENT(EVENT_Click);}int CTextBox::find(QComboBox *list, const QString& s){ for (int i = 0; i < (int)list->count(); i++) { if (list->text(i) == s) return i; } return (-1);}QString& CTextBox::getAll(QComboBox *list){ static QString s; s = ""; for (int i = 0; i < (int)list->count(); i++) { if (i > 0) s += '\n'; s += list->text(i); } return s;}void CTextBox::setAll(QComboBox *list, const QString &all){ int pos; QString s(all); list->clear(); if (s.length() == 0) return; list->blockSignals(true); for(;;) { pos = s.find('\n'); if (pos < 0) { list->insertItem(s); break; } list->insertItem(s.left(pos)); s = s.mid(pos + 1); } list->blockSignals(false);}/*************************************************************************** Descriptions***************************************************************************/GB_DESC CTextBoxSelectionDesc[] ={ GB_DECLARE(".TextBoxSelection", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY("Text", "s", CTEXTBOX_sel_text), GB_PROPERTY_READ("Length", "i", CTEXTBOX_sel_length), GB_PROPERTY_READ("Start", "i", CTEXTBOX_sel_start), GB_PROPERTY_READ("Pos", "i", CTEXTBOX_sel_start), GB_METHOD("Clear", NULL, CTEXTBOX_sel_clear, NULL), GB_METHOD("Hide", NULL, CTEXTBOX_sel_clear, NULL), GB_METHOD("All", NULL, CTEXTBOX_sel_select_all, NULL), GB_METHOD("_call", NULL, CTEXTBOX_sel_select, "[(Start)i(Length)i]"), GB_END_DECLARE};GB_DESC CTextBoxDesc[] ={ GB_DECLARE("TextBox", sizeof(CTEXTBOX)), GB_INHERITS("Control"), GB_METHOD("_new", NULL, CTEXTBOX_new, "(Parent)Container;"), GB_PROPERTY("Text", "s", CTEXTBOX_text), GB_PROPERTY("Alignment", "i<Align,Normal,Left,Center,Right>", CTEXTBOX_alignment), GB_PROPERTY_READ("Length", "i", CTEXTBOX_length), GB_PROPERTY("Pos", "i", CTEXTBOX_pos), GB_PROPERTY("ReadOnly", "b", CTEXTBOX_read_only), GB_PROPERTY("Border", "b", CTEXTBOX_border), GB_PROPERTY("Password", "b", CTEXTBOX_password), GB_PROPERTY("MaxLength", "i", CTEXTBOX_max_length), GB_PROPERTY_SELF("Selection", ".TextBoxSelection"), GB_PROPERTY_SELF("Select", ".TextBoxSelection"), //GB_METHOD("Select", NULL, CTEXTBOX_sel_select, "[(Start)i(Length)i]"), GB_CONSTANT("_Properties", "s", CTEXTBOX_PROPERTIES), GB_CONSTANT("_DefaultEvent", "s", "KeyPress"), GB_METHOD("Clear", NULL, CTEXTBOX_clear, NULL), GB_METHOD("Insert", NULL, CTEXTBOX_insert, "(Text)s"), GB_EVENT("Change", NULL, NULL, &EVENT_Change), GB_EVENT("Activate", NULL, NULL, &EVENT_Activate), GB_END_DECLARE};GB_DESC CComboBoxItemDesc[] ={ GB_DECLARE(".ComboBoxItem", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY("Text", "s", CCOMBOBOX_item_text), GB_END_DECLARE};GB_DESC CComboBoxDesc[] ={ GB_DECLARE("ComboBox", sizeof(CCOMBOBOX)), GB_INHERITS("Control"), GB_METHOD("_new", NULL, CCOMBOBOX_new, "(Parent)Container;"), GB_METHOD("_get", ".ComboBoxItem", CCOMBOBOX_get, "(Index)i"), GB_PROPERTY("Text", "s", CCOMBOBOX_text), GB_PROPERTY_READ("Length", "i", CCOMBOBOX_length), GB_PROPERTY("Pos", "i", CTEXTBOX_pos), GB_PROPERTY("ReadOnly", "b", CCOMBOBOX_read_only), GB_PROPERTY("Password", "b", CTEXTBOX_password), GB_PROPERTY("MaxLength", "i", CTEXTBOX_max_length), GB_PROPERTY_SELF("Selection", ".TextBoxSelection"), GB_PROPERTY_SELF("Select", ".TextBoxSelection"), //GB_METHOD("Select", NULL, CTEXTBOX_sel_select, "[(Start)i(Length)i]"), GB_CONSTANT("_Properties", "s", CCOMBOBOX_PROPERTIES), GB_CONSTANT("_DefaultEvent", "s", "Click"), GB_METHOD("Clear", NULL, CCOMBOBOX_clear, NULL), GB_METHOD("Insert", NULL, CTEXTBOX_insert, "(Text)s"), // GB_METHOD("Add", NULL, CCOMBOBOX_add, "(Item)s[(Index)i]"), GB_METHOD("Remove", NULL, CCOMBOBOX_remove, "(Index)i"), GB_METHOD("Find", "i", CCOMBOBOX_find, "(Item)s"), /* GB_METHOD("Select", NULL, CCOMBOBOX_select, 1, 1, "i"), GB_METHOD("Invert", NULL, CCOMBOBOX_invert, 0, 0, NULL), */ GB_PROPERTY("Sorted", "b", CCOMBOBOX_sorted), GB_PROPERTY("List", "s", CCOMBOBOX_list), GB_PROPERTY("Contents", "s", CCOMBOBOX_list), GB_PROPERTY_READ("Count", "i", CCOMBOBOX_count), GB_PROPERTY_READ("Current", ".ComboBoxItem", CCOMBOBOX_current), GB_PROPERTY("Index", "i", CCOMBOBOX_index), //GB_PROPERTY("Mouse", "i", CCOMBOBOX_mouse), GB_EVENT("Change", NULL, NULL, &EVENT_Change), GB_EVENT("Activate", NULL, NULL, &EVENT_Activate), GB_EVENT("Click", NULL, NULL, &EVENT_Click), GB_END_DECLARE};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -