• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego nie widzę pionowego scrollbar'a?

Object Storage Arubacloud
+1 głos
288 wizyt
pytanie zadane 23 września 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)

Wita, piszę program, który ma być prostym edytorem tekstu wykorzystując bibliotekę Qt ustawiłem odpowiednio kiedy tekst nie mieści się w oknie włącza się poziomy scrollbar i można wszystko przeczytać. Natomiast kiedy w poziomie teksty nie mieści się w oknie to po mimo tego, że ustawiłem odpwoednio to kiedy powinien pojawić się pionowy scrollbar nic się nie pokazuje. Dlaczego?

 

#include <QApplication>
#include <QWidget>
#include <QFrame>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QTextEdit>
#include <QFile>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    QFile file("D:/LearningQt/simpleTextEditor/style.qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = file.readAll();

    app.setStyleSheet(styleSheet);

    auto mainWindow = new QWidget();
    mainWindow->resize(1280, 720);

    auto mainLayout = new QHBoxLayout();
    mainLayout->setAlignment(Qt::AlignLeft);
    mainLayout->setContentsMargins(0, 0, 0, 0);

    auto buttonsMainLayout = new QVBoxLayout();
    buttonsMainLayout->setAlignment(Qt::AlignTop);

    auto topButtonsLayout = new QVBoxLayout();
    topButtonsLayout->setContentsMargins(0, 0, 0, 0);
    topButtonsLayout->setAlignment(Qt::AlignTop);

    auto bottomButtonsLayout = new QVBoxLayout();
    bottomButtonsLayout->setContentsMargins(0, 0, 0, 0);
    bottomButtonsLayout->setAlignment(Qt::AlignBottom);
    bottomButtonsLayout->addStretch(0);

    auto inputField = new QTextEdit();
    inputField->setContentsMargins(0, 0, 0, 0);
    inputField->setFrameStyle(QFrame::NoFrame);
    inputField->setLineWrapMode(QTextEdit::NoWrap);
    inputField->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    inputField->setFontFamily("Courier New");

    auto buttonsMainFrame = new QFrame();
    buttonsMainFrame->setMaximumWidth(200);

    auto topButtonsFrame = new QFrame(buttonsMainFrame);
    auto btn1 = new QPushButton("One");
    auto btn2 = new QPushButton("Two");
    auto btn3 = new QPushButton("Three");

    btn1->setMinimumSize(100, 40);
    btn2->setMinimumSize(100, 40);
    btn3->setMinimumSize(100, 40);

    topButtonsLayout->addWidget(btn1);
    topButtonsLayout->addWidget(btn2);
    topButtonsLayout->addWidget(btn3);

    topButtonsFrame->setLayout(topButtonsLayout);

    auto bottomButtonsFrame = new QFrame(buttonsMainFrame);
    auto btn4 = new QPushButton("Four");
    auto btn5 = new QPushButton("Five");

    btn4->setMinimumSize(100, 40);
    btn5->setMinimumSize(100, 40);
    bottomButtonsLayout->addWidget(btn4);
    bottomButtonsLayout->addWidget(btn5);

    bottomButtonsFrame->setLayout(bottomButtonsLayout);

    buttonsMainLayout->addWidget(topButtonsFrame);
    buttonsMainLayout->addWidget(bottomButtonsFrame);
    buttonsMainFrame->setLayout(buttonsMainLayout);

    mainLayout->addWidget(buttonsMainFrame);
    mainLayout->addWidget(inputField, 1);
    mainWindow->setLayout(mainLayout);
    mainWindow->show();
    return app.exec();
}

 

2 odpowiedzi

0 głosów
odpowiedź 24 września 2021 przez VBService Ekspert (253,300 p.)

Według dokumentacji powinieneś scrollbar-a też za-include-ować.  wink

#include <QAbstractScrollArea>

 

komentarz 24 września 2021 przez tonn204 Mądrala (7,440 p.)
Dodałem ten plik nagłówkowy ale dalej nic. Jakieś inne pomysły?
0 głosów
odpowiedź 24 września 2021 przez Szfierzak Gaduła (3,750 p.)
Cytując klasykę - Dziwne, u mnie działa;) - oba scroll bary pojawiają się chyba kiedy trzeba, przewijają tekst, wszystko wygląda dobrze.

Jeszcze spytam, Linux czy windows? Niby nie powinno mieć znaczenia, ale testowałem kod na windows Qt 6.1.1 MinGW 64bit.

Sprawdź, czy wersję Qt masz odpowiadającą dokumentacji z której korzystasz.
komentarz 24 września 2021 przez tonn204 Mądrala (7,440 p.)
Problem prawie mam rozwiązany. Usunąłem podłączony do aplikacji plik.qss i już widzę srollbar'a, ale czy dlaczego mój kod do arkusza stylów powoduje, że go nie widać?

Podobne pytania

0 głosów
1 odpowiedź 336 wizyt
pytanie zadane 1 listopada 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
0 odpowiedzi 278 wizyt
pytanie zadane 14 października 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
+1 głos
0 odpowiedzi 286 wizyt
pytanie zadane 11 listopada 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...