Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pozycjonowanie Elementów Menu

Ostatnio zmodyfikowano 2024-10-14 15:16
Autor Wiadomość
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.git
C/C++
sf::Vector2f position; // pozycja top left menuBarButton

void addOption( TextButtonWithLeftAlignment * btn ) {
   
   
options.push_back( btn );
   
   
// GET THE MAX WIDTH
   
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;
       
   
}
   
   
// SET THE WIDTH FOR ANY BUTTON
   
for( auto & o: options ) {
       
o->rect.setSize( sf::Vector2f( max_width, o->rect.getSize().y ) );
   
}
   
   
// POSITIONING 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 ) );
   
}
   
   
// CREATE CHECKBOX
   
if( dynamic_cast < OptionButton * >( btn ) ) {
       
dynamic_cast < OptionButton * >( btn )->checkbox = new CheckBox();
   
}
   
   
// POSITIONING ANY 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";
   
}
P-181698
pekfos
» 2024-10-14 14:07:20
C/C++
for( auto & ob: options ) {
   
OptionButton * o = dynamic_cast < OptionButton * >( btn );
Modyfikujesz checkbox dla btn, nie ob.
P-181699
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 :-)

P-181700
« 1 »
  Strona 1 z 1