Как проверить тип виджетов, возвращаемых get_children()?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как проверить тип виджетов, возвращаемых get_children()?

Сообщение Anonymous »

использование get_children() в Gtk::Container возвращает std::vector(виджеты, содержащиеся в контейнере).
Gtk::Entry наследуется от Gtk::Widget. Конечно, определенные функции Gtk::Entry, такие как get_text(), не могут быть вызваны Gtk::Widget.
Для решения этой проблемы я могу привести Gtk::Widget к Gtk::Entry, но теперь вы видите проблему: как мне поступить, если в контейнере есть какой-то другой виджет, скажем, Gtk::Button?
for ( auto* widgetOfTheEvilDead : ContainerCoffin->get_children() )
{
if ( widgetOfTheEvilDead->get_visible() /*shared by all widget*/ )
{
// do something if I'm an entry, e.g.:
text = static_cast( widgetOfTheEvilDead )->get_text();

if ( text == "Rotting Christ")
this->music->play("Lucifer Over Athens");
}

}

для полноты, в моем случае я использую не Gtk::Entry, а свой собственный виджет, который наследуется от Gtk::Entry :
class Tombstone
: public Gtk::Entry
{
.
.
.
}


Подробнее здесь: https://stackoverflow.com/questions/322 ... t-children
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»