Jump to content

Баги GUI API


photo

Recommended Posts

Posted (edited)

Добрый день.

1. Нельзя ограничить количество вводимых символов, строка либо сдвигается за границы виджета, если он ограничен контейнером, либо двигает границы виджета.

2. Не удалось заставить работать setPosition(). Без ALIGN виджет располагается дефолтно. С ALIGN соответственно его параметру.

3. Контейнер Окно не масштабируется если setSizeable(0). Должна быть возможность установить размеры через setHeight(), setWidth() при любом раскладе.

С Уважением Константин.

 

Edited by Vasara
Posted

Здравствуйте.

2 hours ago, Vasara said:

1. Контейнер справа не поменял размеры.

Какое именно поведение вы от него хотите?

Встроенной функции для ограничения количества символов нет. Это можно решить при помощи такого коллбека:

int AppWorldLogic::init()
{
  ...
  edittextGridSizeX->addCallback(Gui::CHANGED, MakeCallback(this, &AppWorldLogic::on_text_changed));
  ...
}


void AppWorldLogic::on_text_changed()
{
	const auto LIMIT = 3;
	auto MAX_SYMBOLS = LIMIT + edittextGridSizeX->getNumLines() - 1;

	if (strlen(edittextGridSizeX->getText()) > MAX_SYMBOLS)
	{
		String str(edittextGridSizeX->getText(), MAX_SYMBOLS);
		
		auto num_lines = 1;
		auto last_line_size = 0;
		for (auto it = str.get(), ite = it + str.size(); it != ite; ++it)
		{
			if (*it == '\n')
			{
				++num_lines;
				last_line_size = 0;
			}
			else ++last_line_size;
		}

		edittextGridSizeX->setCallbackEnabled(Gui::CHANGED, false);
		edittextGridSizeX->setText(str);
		edittextGridSizeX->setCallbackEnabled(Gui::CHANGED, true);

		edittextGridSizeX->setCursor(last_line_size, num_lines - 1);
	}
}

 

Posted
2 hours ago, Vasara said:

2. Не удалось заставить работать setPosition(). Без ALIGN виджет располагается дефолтно. С ALIGN соответственно его параметру.

Попробуйте флаг ALIGN_OVERLAP

Posted
2 hours ago, Vasara said:

3. Контейнер Окно

Какой виджет вы имеете в виду?

  • Like 1
Posted
8 hours ago, moroz said:

Какое именно поведение вы от него хотите?

Была моя ошибка, после копипасты недосмотрел имя виджета.

9 hours ago, moroz said:

Попробуйте флаг ALIGN_OVERLAP

Попробовал, работает.

9 hours ago, moroz said:

Какой виджет вы имеете в виду?

Widget Window. 

Спасибо, ваша помощь сэкономила мне кучу времени.

×
×
  • Create New...