В моем собственном графическом я создал множество элементов управления (с использованием uicontrol
), чтобы пользователи могли настроить фильтр, используемый на более поздней стадии обработки.Создание пользовательского и многоразового управления пользовательским интерфейсом
Редактор фильтра состоит из выпадающего списка, чтобы выбрать тип фильтра, а также множество полей редактирования, которые обновляются по выбранному типу фильтра и многим обратным вызовам, чтобы реагировать на пользовательские входы.
Теперь мне нужно добавить этот фильтр в другой графический интерфейс, и, конечно же, я не хочу копировать всю логику, которую я уже сделал, и предпочел бы создать какой-то пользовательский элемент управления, который я могу повторно использовать как легко, как:
filterEditor = uifilter('Parent', gcf);
set(filterEditor, 'FilterDescription', 'Cylinder (r = 45 cm, h = 1 m)');
set(filterEditor, 'Callback', @onFilterEditModified);
есть ли стандартная процедура для создания пользовательских «uicontrol
» объекты? Я искал в интернете и документации MatLab, но не нашел хороший указатель еще ...
В настоящее время я имею в виду, чтобы создать пользовательский класс, производный от hgsetget
:
classdef uifilter < hgsetget
properties
% Local properties
FilterDescription;
Callback;
end
properties(SetAccess=private, GetAccess=private)
% Internal controls
globalContainer;
comboFilterType;
edit1;
end
methods
function [this] = uifilter(varargin)
% Create a global `uicontainer` to hold my controls
[localPVpairs, genericPVpairs] = separatePVpairs(varargin{:});
this.container = uicontainer(genericPVpairs{:});
% Create my own controls and logic
this.comboFilterType = uicontrol('Parent', this.container, ...);
this.edit1 = ...
end
end
end
для того, чтобы имитировать поведение uicontrol
(set
, get
, и т. Д.), Но, возможно, существует более стандартный подход или какой-либо базовый класс, отличный от hgsetget
, чтобы начать с (т.е. некоторый базовый класс с Visible
, Enable
, HitTest
и т. Д. Уже определен с реализацией по умолчанию)?
Благодарим за поддержку по поводу моих многочисленных вопросов по GUI :) ... Вы правы, мне нужно позаботиться о детях типа GUI-Layout (+ ошибки, введенные в версию для HG2 с видимыми/включенными свойствами, см. мои комментарии с 22 по 23 декабря 2014 года на [fileexchange] (http://www.mathworks.com/matlabcentral/fileexchange/47982-gui-layout-toolbox) ... Я начну разрабатывать некоторые базы данных 'uicontrolbase', класс и отправьте его здесь для справки ... Я надеюсь, что MathWorks также предоставит нам лучший способ разработки современного/современного графического интерфейса в следующих выпусках Matlab, потому что в настоящее время довольно сложно делать простые вещи :) – CitizenInsane
Они делают именно это - ознакомьтесь с этим [Tech Preview] (http://www.mathworks.com/matlabcentral/fileexchange/48142-app-designer) планируемого «App Designer», который, как я предполагаю, является предстоящей заменой GUIDE. Он имеет множество новых элементов управления и генерирует приятный OO GUI-код, который ** бесконечно ** лучше, чем текущий код GUIDE. Это еще не закончено, поэтому у вас есть возможность предоставить свои отзывы о том, что вы хотели бы видеть. –
** Звучит здорово! ** Я проверю это как можно :) – CitizenInsane