• 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?

VPS Starter Arubacloud
+1 głos
285 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 (251,210 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ź 323 wizyt
pytanie zadane 1 listopada 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
0 odpowiedzi 273 wizyt
pytanie zadane 14 października 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
+1 głos
0 odpowiedzi 247 wizyt
pytanie zadane 11 listopada 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...