Nie wiem jak to nazwać, ustawianie uniwersalnych wymiarów przycisków/okienek/pól tekstowych



  • Dzień dobry!
    Nie wiem jak to się nazywa w slangu profesjonalistów, ale chwiałbym, żeby to co ustawie sobie w okienku mojego programu miało uniwersalny rozmiar, żeby np. guzik zajmował 10 % szerokości i 10 % wysokości okienka; podobnie chwiałbym zrobić z resztą rzeczy w okienku.
    Chcę zrobić aplikację na Androida, a jak wiadomo urządzenia z Androidem mają ekrany różnych rozmiarów dla tego muszę opracować ten temat.
    Czy jest jakiś łatwy sposób na to ?
    Póki co ustawiałem ręcznie rozmiary wszystkich graficznych obiektów w interfejsie mojego programu i w momencie kiedy rozmiar okienka się zmieniał, ponownie przeliczałem rozmiary i ustawiałem je obiektom. Czy można to jakoś uniknąć ?


  • Moderators

    Jeden ze sposobów to poustawianie odpowiednich wartości anchors, np. dwa prostokąty o szerokości/wysokości 10% rodzica i odstępach też po 10%:

    Rectangle {
            color: "red"
            anchors.fill: parent
    
            Rectangle {
                color: "blue"
                anchors.fill: parent
                anchors.leftMargin: parent.width * 0.1
                anchors.rightMargin: parent.width * 0.8
                anchors.topMargin: parent.height * 0.1
                anchors.bottomMargin: parent.height * 0.8
            }
            Rectangle {
                color: "blue"
                anchors.fill: parent
                anchors.leftMargin: parent.width * 0.3
                anchors.rightMargin: parent.width * 0.6
                anchors.topMargin: parent.height * 0.1
                anchors.bottomMargin: parent.height * 0.8
            }
        }
    


  • To jest CSS? Czy Qt Quick ?


  • Moderators

    Nie napisałeś czego używasz więc, skoro to projekt na Androida, założyłem, że chodzi Ci o QML (QtQuick).
    Jeśli używasz widgetów to wrzucasz elementy w layout i szerokości możesz sobie ustawić za pomocą size policy, np. dwa przyciski 20% i 80% szerokości:

    auto btn1 = new QPushButton("Hello");
    auto btn2 = new QPushButton("World");
    
    QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Fixed);
    
    policy.setHorizontalStretch(20);
    btn1->setSizePolicy(policy);
    
    policy.setHorizontalStretch(80);
    btn2->setSizePolicy(policy);
    
    auto widget = new QWidget;
    widget->setLayout(new QHBoxLayout);
    widget->layout()->addWidget(btn1);
    widget->layout()->addWidget(btn2);
    


  • O, łał, fajne rozwiązanie. :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.