Qt Creator - свойства QScrollArea

248
09 июля 2022, 11:40

Скажите, люди знающие, могу ли я каким-либо образом изменить цвет полос прокрутки (QScrollArea) или сделать их вид дефолтным, чтобы он не перекрывался фоном, внутри окна виджета? По заданию - изначально был дан некоторый код, у некоторых объектов изменил лишь "свойства" - цвет фона, размер окна, добавлен рисунок. Полосы прокрутки в коде даны сразу. Проблема - цвет полос имеет цвет фона. Метод setStyleSheet("background-color: white") окрашивает лишь уголок снизу справа:

#include <QtGui>
#include <QLabel>
#include <QScrollArea>
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    w.setWindowTitle("MyWidget");
    w.setWindowFlags(Qt::WindowStaysOnTopHint|Qt::X11BypassWindowManagerHint);
    w.setWindowModality(Qt:: ApplicationModal);
    w.setFixedSize(1350, 1080);
    w.setCursor(Qt::CrossCursor);
    w.setStyleSheet("background-color: rgb(234,17,85);");
    QPixmap pic("VECTOR.jpg");
    QLabel lbl;
    lbl.setPixmap(pic);
    lbl.setCursor(Qt::UpArrowCursor);
    lbl.resize(700,900);
    QScrollArea scrollArea(&w);
    scrollArea.setWidget(&lbl);
    scrollArea.setStyleSheet("background-color: white;");
    scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    scrollArea.setGeometry(295,60,700,900);

    //qDebug()<<"File exists -"<<QFileInfo("VECTOR.jpg").exists()<<" "<<QFileInfo("VECTOR.jpg").absoluteFilePath();
    //qDebug() << pic.load("VECTOR.jpg");
    w.show();
    return a.exec();
}
Answer 1

Стили в Qt наследуются, поэтому указывайте их для конкретного объекта

  1. или четко задавайте цвет фона по имени для избежания наследования:

    w.setObjectName("myWidget"); w.setStyleSheet("#myWidget{background-color:red;}");

  2. или переопределяйте цвета для скроллбаров отдельно:

    scrollArea.setStyleSheet("QScrollArea{background-color: transparent;}QScrollBar{background-color: blue;}");

Ну и конечно же ознакомьтесь с документацией:

стайлшиты: https://doc.qt.io/qt-5/stylesheet-reference.html

примеры: https://doc.qt.io/qt-5/stylesheet-examples.html

READ ALSO
Не могу перегрузить оператор +

Не могу перегрузить оператор +

Проблема заключается в том, что раньше я перегружал таким методом, а с шаблонными функциями это, как я понял, работает по-другомуПодскажите,...

225
Как добавить boost thread через cmake?

Как добавить boost thread через cmake?

Не могу понять как подтянуть бинарь буста через cmake, заголовки подключаются, но бинарь не находится, что я написал неправильно? В данном примере...

239
Не пойму как работает void в c++

Не пойму как работает void в c++

Не пойму как работает void в с++Где-то читал, что если перед функцией ничего не стоит, то подразумевается что там стоит void

248