line-edit.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #if defined(Hiro_LineEdit)
  2. namespace hiro {
  3. auto pLineEdit::construct() -> void {
  4. qtWidget = qtLineEdit = new QtLineEdit(*this);
  5. qtLineEdit->connect(qtLineEdit, SIGNAL(returnPressed()), SLOT(onActivate()));
  6. qtLineEdit->connect(qtLineEdit, SIGNAL(textEdited(const QString&)), SLOT(onChange()));
  7. pWidget::construct();
  8. setBackgroundColor(state().backgroundColor);
  9. setEditable(state().editable);
  10. setForegroundColor(state().foregroundColor);
  11. setText(state().text);
  12. }
  13. auto pLineEdit::destruct() -> void {
  14. delete qtLineEdit;
  15. qtWidget = qtLineEdit = nullptr;
  16. }
  17. auto pLineEdit::minimumSize() const -> Size {
  18. auto size = pFont::size(qtWidget->font(), state().text);
  19. return {size.width() + 12, size.height() + 12};
  20. }
  21. auto pLineEdit::setBackgroundColor(Color color) -> void {
  22. static auto defaultColor = qtLineEdit->palette().color(QPalette::Base);
  23. auto palette = qtLineEdit->palette();
  24. palette.setColor(QPalette::Base, CreateColor(color, defaultColor));
  25. qtLineEdit->setPalette(palette);
  26. qtLineEdit->setAutoFillBackground((bool)color);
  27. }
  28. auto pLineEdit::setEditable(bool editable) -> void {
  29. qtLineEdit->setReadOnly(!state().editable);
  30. }
  31. auto pLineEdit::setForegroundColor(Color color) -> void {
  32. static auto defaultColor = qtLineEdit->palette().color(QPalette::Text);
  33. auto palette = qtLineEdit->palette();
  34. palette.setColor(QPalette::Text, CreateColor(color, defaultColor));
  35. qtLineEdit->setPalette(palette);
  36. }
  37. auto pLineEdit::setText(const string& text) -> void {
  38. qtLineEdit->setText(QString::fromUtf8(state().text));
  39. }
  40. auto QtLineEdit::onActivate() -> void {
  41. p.self().doActivate();
  42. }
  43. auto QtLineEdit::onChange() -> void {
  44. p.state().text = text().toUtf8().constData();
  45. p.self().doChange();
  46. }
  47. }
  48. #endif