IscanderChe18 июня 2020 г. 9:45

Залить цветом QScrollArea

День добрый.

Пытаюсь залить QScrollArea белым цветом. Делаю это следующим образом:

widget.h

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget* parent = nullptr);
    ~Widget();

private:
    QWidget* m_widget;
    QScrollArea* m_scrollArea;
    QGroupBox* m_groupe;
    QVBoxLayout* m_layout;
    QVBoxLayout* m_mainLayout;
};

widget.cpp

Widget::Widget(QWidget* parent)
    : QWidget(parent)
{
    m_widget = new QWidget(this);

    QPalette palette = m_widget->palette();
    palette.setColor(QPalette::Background, Qt::white);
    m_widget->setAutoFillBackground(true);
    m_widget->setPalette(palette);

    m_scrollArea = new QScrollArea(this);
    m_scrollArea->setWidget(m_widget);
    m_groupe = new QGroupBox(tr("Виджет"), this);
    m_layout = new QVBoxLayout;
    m_mainLayout = new QVBoxLayout;
    m_layout->addWidget(m_scrollArea);
    m_groupe->setLayout(m_layout);
    m_mainLayout->addWidget(m_groupe);
    setLayout(m_mainLayout);

    resize(200, 200);
}

Если не использовать QScrollArea, окрашенный в белый цвет виджет m_widget виден, с QScrollArea - белый виджет пропадает куда-то... Но а) m_widget нужен, поскольку планирую менять его на нужный в зависимости от вставляемого с помощью drag and drop контента и б) QScrollArea тоже необходим, чтобы была видна рамка.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
7
S
  • 18 июня 2020 г. 11:30
  • (ред.)
  • Ответ был помечен как решение.

Если тебе нужна рамка, разве не проще использовать QFrame, так и рамки из коробки менять можно
.
.
.

Сделал так:

    m_frame = new QFrame(this);
    m_frame->setLineWidth(2);
    m_frame->setMidLineWidth(1);

Рамка не показывается. Что не так?

Разобрался. Забыл m_frame->setFrameShape(QFrame::Box) поставить.
Спасибо!

Теперь новая засада: ставлю setContentMargins(0, 0, 0, 0), и рамка исчезает. А мне надо, чтобы вижет заподлицо с рамкой был, а не на расстоянии.

S

Возможно, виджет перекрывает фрейм, нужно просто поправить z-index

Попробуй QWidget:: stackUnder() / raise() / lover()

Никакого эффекта.

Так получилось:

Widget::Widget(QWidget* parent)
    : QWidget(parent)
{
    m_widget = new QWidget(this);

    QPalette palette = m_widget->palette();
    palette.setColor(QPalette::Background, Qt::white);
    m_widget->setAutoFillBackground(true);
    m_widget->setPalette(palette);

    m_widgetLayout = new QVBoxLayout;
    m_widgetLayout->setContentsMargins(0, 0, 0, 0);
    m_widgetLayout->addWidget(m_widget);
    m_frame = new QFrame(this);
    m_frame->setLineWidth(1);
    m_frame->setMidLineWidth(0);
    m_frame->setFrameShape(QFrame::Box);
    m_frame->setLayout(m_widgetLayout);
    m_frameLayout = new QVBoxLayout;
    m_frameLayout->addWidget(m_frame);
    m_groupe = new QGroupBox(tr("Виджет"), this);
    m_groupe->setLayout(m_frameLayout);
    m_mainLayout = new QVBoxLayout;
    m_mainLayout->addWidget(m_groupe);

    setLayout(m_mainLayout);

    resize(200, 200);
}

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Как стать автором?

Внесите вклад в развитие сообщества EVILEG.

Узнайте, как стать автором сайта.

Изучить
Donate

Добрый день, Дорогие Пользователи !!!

Я Евгений Легоцкой, разработчик EVILEG. И это мой хобби-проект, который помогает учиться программированию другим программистам и разработчикам

Если сайт помог вам, и вы хотите также поддержать развитие сайта, то вы можете сделать пожертвование следующими способами

PayPalYandex.Money
Timeweb

Позвольте мне порекомендовать вам отличный хостинг, на котором расположен EVILEG.

В течение многих лет Timeweb доказывает свою стабильность.

Для проектов на Django рекомендую VDS хостинг

Посмотреть Хостинг
R

C++ - Тест 002. Константы

  • Результат:75баллов,
  • Очки рейтинга2
R

C++ - Тест 001. Первая программа и типы данных

  • Результат:73баллов,
  • Очки рейтинга1
MS

C++ - Тест 005. Структуры и Классы

  • Результат:75баллов,
  • Очки рейтинга2
Последние комментарии
V

Django - Урок 027. Добавление Google reCAPTCHA

Спасибо. Только использую декоратор не в urls.py а перед views
R

Qt WinAPI - Урок 001. Как собрать все DLL, используемые в Qt-проекте?

Вы меня не совсем правильно поняли, но все равно спасибо, принял все к сведению. Все сделал как вы сказали, все отлично работает, еще раз огромнейшее спасибо) Разве что только что были опять про…

Qt WinAPI - Урок 001. Как собрать все DLL, используемые в Qt-проекте?

Стоило перед использованием что ли инструкцию прочитать https://www.cyberforum.ru/blogs/131347/blog2457.html "После сборки при запуске требовались dll," Ясное дело стоило задепло…
R
R

Qt WinAPI - Урок 001. Как собрать все DLL, используемые в Qt-проекте?

Да, собралось. После сборки при запуске требовались dll, перекинул всю папки bin, plugins(не знаю как можно было сделать более умно). Как я понял в первой строке путь к екзешнику вставляю, втор…
Сейчас обсуждают на форуме
A

Как в Qt в qmenu добавить scrollarea

Добрый день. Мое имя Кристина. Познакомлюсь с другом для встречи. Приеду к тебе в гости или встримся у меня. Живу близко. Мой адрес

Qt C++ и Python

Красиво/некрасиво - это скорее моё личное отношение. Если есть возможность ограничить количество интсрументов, то лучше ограничить. Но не зацикливайтесь на этом. Если у вас есть скрипты Py…

Qt + OpenGL glDeleteVertexArrays

Я не уверен, поскольку с OpenGL очень мало работал. Но может быть OpenGL контекст виджета нужно переинициализовывать. И ещё виджет стоит удалять через метод deleteLater() а не п…

QWebEngineView не запускается если к ПК подключено несколько мониторов

Ну я имел ввиду посмотреть на другом ПК с другой графикой и парой мониторов. Как моей программе назначить использовать определенный граф. адаптер? Вот тут понятия не имею.

Счечик производительности сети

Хорошо. После работы сегодня гляну ваш код внимательно.
О нас
Услуги
© EVILEG 2015-2020
Рекомендует хостинг TIMEWEB