Создание радио кнопки - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю с переключателями в wxWidgets и у меня возникают проблемы при инициализации размера кнопки и ее координат в кадре.

Следующий код создает переключатель, но не дает его правильный размер и начальные координаты (wxPoint и wxSize не работают).

Мой вопрос: как правильно реализовать wxSize и wxPoint в этом случае?

Спасибо,

        //Units Radio Box
    wxString choices[] = { "Metric (mm)","Imperial (in.)" };
    int Num_Choices = 2;

wxRadioBox * Units;

    Units = new wxRadioBox(this,
                            wxID_ANY, 
                            _T("Input Units"),
                            wxPoint(-20,-25),
                            wxSize(20,20), 
                            Num_Choices,
                            choices,
                            1,
                            wxRA_SPECIFY_COLS,
                            wxDefaultValidator,
                            _T("Input Units"));

1 Ответ

2 голосов
/ 19 апреля 2020

Как упомянуто в EVT_SIZE описании документации wxFrame , он изменяет размер своего только дочернего элемента, чтобы заполнить всю клиентскую область по умолчанию. Это то, что очень удобно в обычном случае, когда у вас есть wxPanel как единственный дочерний элемент кадра, но, очевидно, не так много, если вы хотите иметь только радио-блок.

Чтобы это исправить определите свой собственный обработчик wxEVT_SIZE, ничего не делая. Или, может быть, даже проще, просто создайте другое окно (которое может быть wxStaticText без метки, что делает его фактически невидимым).

Конечно, использование абсолютного положения и размеров не сработает в любом случае, потому что из различий между платформами отображает DPI et c, поэтому настоятельно делать не рекомендуется. Используйте размеры для макета, по крайней мере, используйте диалоговые единицы вместо значений в пикселях.

...