Russian Qt Forum
Май 04, 2024, 20:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 25 26 [27]
391  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 07, 2020, 20:28
Не вопрос.
Вот "на коленке" набросал проект. Фактически то, что я описывал в начале темы.
Может быть, я хочу чего-то принципиально невозможного, но я хочу увидеть в консоли "my_widget", а не "MyClass".
392  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 06, 2020, 22:04
Нет. "objectName" - обычная пропердь, у экземпляра созданного дызайнером она будет = "Вася", у других пустая строка по умолчанию (или то что им установили)
Вы можете ведь сами проверить - будет не так. Изнутри класса objectName будет одним, а в редакторе - другим.
Я в начале тоже думал, что они должны быть одинаковыми - однако реальность показывает другое.
P.S. Я, конечно, могу допустить, что в винде всё может быть по-другому. Но меня больше интересуют linux и macos
393  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 05, 2020, 18:44
Так он и назначается "снаружи" (а не в коде класса) - см код создаваемый дызайнером
Ну так я и спрашиваю, как именно его увидеть изнутри класса? Я и так знаю, что он создается "дызайнером". Улыбающийся
394  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 04, 2020, 15:23
Сделайте методы QByteArray saveState()/void restoreState(const QByteArray &state) в MyClass. В простом случае можно сделать геттер\сеттер для спинбокса.

А потом проходите по всем MyClass (или конкретному):
Код:
for (auto *child : findChildren<MyClass>()) {
    // получили стейт
    auto state = child->saveState();
    // сохраняем куда-то (в мапу сеттингзы или еще куда)
    map[child->objectName()] = state;
}
Проблема в подобном решении в том, что я в КАЖДОМ классе, использующем MyClass буду вынужден вызывать эти самые saveState/restoreState. И стОит где-то это забыть и всё...
Хотелось бы как то изнутри MyClass это делать. Один раз написать и забыть. И если бы знать ИЗНУТРИ класса, назначенный ему СНАРУЖИ objectName - было бы просто замечательно.
395  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 04, 2020, 15:08
Вопрос: могу ли я как то из класса MyClass увидеть этот самый my_widget? Без использования редактора, просто из кода.
Строго говоря - нет. Код создается для класса экземпляров которого может быть сколько угодно. Отличить проще всего по имени, напр
Код
C++ (Qt)
void MyClass::DoSometrhing( .. )
{
 if (this->objectName() == "Вася")
  ..
}
 
Хотя это конечно коряво  Улыбающийся
Проблема только в том, что objectName будет у всех таких объектов одинаковый...
396  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 04, 2020, 15:07
Допустим, в этом классе MyClass есть объект QSpinBox. И ещё 100500 визуальных компонентов.
Я на родительской форме размещаю десяток простых widget, которые затем преобразовываю в MyClass.
А теперь я хочу в родительском классе сохранить значения этих QSpinBox. Я могу пройтись по всем QSpinBox и сохранить их значения, всё хорошо. Но как их различить друг от друга - objectName то у всех одинаковый.
Если бы я знал objectName "контейнера", то я бы в самом классе сохранял/восстанавливал состояния своих визуальных объектов.
397  Qt / Общие вопросы / Re: Qt: преобразованные виджеты : Март 04, 2020, 14:41
Код:
ui->my_widget
Не. Изнутри класса. К ui родительского объекта ведь так просто не доберёшься...
398  Qt / Общие вопросы / Qt: преобразованные виджеты : Март 04, 2020, 14:35
Доброго времени суток!
1) Создал свой класс MyClass.
2) Создал форму
3) На форму добавил виджет
4) Преобразовал добавленный виджет в MyClass
5) Задал ему objeсtName в дизайнере, допустим my_widget
Вопрос: могу ли я как то из класса MyClass увидеть этот самый my_widget? Без использования редактора, просто из кода.
Страниц: 1 ... 25 26 [27]

Страница сгенерирована за 0.074 секунд. Запросов: 23.