QHBoxLayout innerhalb von einer QScrollArea [Elemente überlagern sich gegenseitig]



  • Die Scroll Area ist mit dem qt-designer erzeugt, ist hier also nicht komplett drauf.

    QPushButton* button1 = new QPushButton("Hallo");
    	button1->setFixedSize(70,30);
    	QPushButton* button2 = new QPushButton("Hallo");
    	button2->setFixedSize(70,30);
    	QPushButton* button3 = new QPushButton("Hallo");
    	button3->setFixedSize(70,30);
    	QPushButton* button4 = new QPushButton("Hallo");
    	button4->setFixedSize(70,30);
    	QPushButton* button5 = new QPushButton("Hallo");
    	button5->setFixedSize(70,30);
    	QPushButton* button6 = new QPushButton("Hallo");
    	button6->setFixedSize(70,30);
    
    	QHBoxLayout* horizontalBox = new QHBoxLayout(ui.scrollArea);
    
    	horizontalBox->addWidget( button1 );
    	horizontalBox->addWidget( button2 );
    	horizontalBox->addWidget( button3 );
    	horizontalBox->addWidget( button4 );
    	horizontalBox->addWidget( button5 );
    	horizontalBox->addWidget( button6 );
    
    	ui.scrollArea->setLayout( horizontalBox );
    

    Zum Problem: Die PushButtons im QHBoxLayout überlagern sich, und die ScrollArea löst das Problem nicht wie gedacht, indem sie eine größere Fläche anbietet.(nix mit Scrollen). Die PushButtons verdecken sich gegenseitig.

    Die Frage ist, wie krieg ich ScrollArea dazu die volle Breite zur Verfügung zu stellen, und dafür da zu sein, wofür ich sie in das Widget gesetzt hab, nämlich zum Scrollen 🙂



  • setLayout ist auch die falsche Methode...
    Pack das Layout in ein widget und füge das hinzu (setWidget()):

    QWidget* w = new QWidget(ui.scrollArea);
    w->setLayout(horizontalBox);
    ui.scrollArea.setWidget(w);
    


  • sehr gut, so funktionierts. Danke!


Anmelden zum Antworten