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

Cloud VPS
+1 głos
532 wizyt
pytanie zadane 23 września 2021 w C i C++ przez tonn204 Mądrala (7,470 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 (256,600 p.)

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

#include <QAbstractScrollArea>

 

komentarz 24 września 2021 przez tonn204 Mądrala (7,470 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,470 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ź 469 wizyt
pytanie zadane 1 listopada 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
0 odpowiedzi 372 wizyt
pytanie zadane 14 października 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)
+1 głos
0 odpowiedzi 577 wizyt
pytanie zadane 11 listopada 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)

93,488 zapytań

142,421 odpowiedzi

322,772 komentarzy

62,906 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

Kursy INF.02 i INF.03
...