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

+1 głos
80 wizyt
pytanie zadane 23 września 2021 w C i C++ przez tonn204 Mądrala (6,830 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 VIP (145,650 p.)

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

#include <QAbstractScrollArea>

 

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

86,526 zapytań

135,279 odpowiedzi

300,595 komentarzy

57,276 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...