[C++] Pozycjonowanie Elementów Menu
Ostatnio zmodyfikowano 2024-10-14 15:16
tBane Temat założony przez niniejszego użytkownika |
[C++] Pozycjonowanie Elementów Menu » 2024-10-14 07:33:54 Próbuję pozycjonować checkboxy w menu. Moim zdaniem kod powinien działać, ale nie działa. Dlaczego ? https://github.com/tBane1995/test.gitsf::Vector2f position; void addOption( TextButtonWithLeftAlignment * btn ) { options.push_back( btn ); float max_width = 0; for( auto & o: options ) { float wdt = o->text.getLocalBounds().getSize().x + 2 * o->margin; if( dynamic_cast < OptionButton * >( o ) ) { wdt += 16; } if( wdt > max_width ) max_width = wdt; } for( auto & o: options ) { o->rect.setSize( sf::Vector2f( max_width, o->rect.getSize().y ) ); } float pos_y = - screenHeight / 2; for( int i = 0; i < options.size(); i++ ) { float pos_y2 = rect.getSize().y; for( int j = 0; j < i; j++ ) { pos_y2 += options[ j ]->rect.getSize().y; } options[ i ]->setPosition( sf::Vector2f( position.x, pos_y + pos_y2 ) ); } if( dynamic_cast < OptionButton * >( btn ) ) { dynamic_cast < OptionButton * >( btn )->checkbox = new CheckBox(); } for( auto & ob: options ) { OptionButton * o = dynamic_cast < OptionButton * >( btn ); if( o != nullptr ) { sf::Vector2f size = sf::Vector2f( ob->rect.getSize().y, ob->rect.getSize().y ); sf::Vector2f pos2; pos2.x = position.x + max_width; pos2.y = o->position.y + size.y / 2.0f; cout << pos2.x << "\n"; o->checkbox->edit( size, pos2, true ); } } cout << "\n\n"; }
|
|
pekfos |
» 2024-10-14 14:07:20 for( auto & ob: options ) { OptionButton * o = dynamic_cast < OptionButton * >( btn ); Modyfikujesz checkbox dla btn, nie ob. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-10-14 15:16:38 aż mi wstyd, że nie dostrzegłem tego błędu. Dzięki za pomoc :-) |
|
« 1 » |