KM
Katty MisikSept. 21, 2020, 2:19 a.m.

виджет динамического размера в виджете постоянно заданого размера, цель: виджет родитель принимал размер виджета ребенка

ui, parent, child, setWidgetResizable

Добрый день, у меня есть виджет динамического размера (2) в виджете статического (1)(постоянно заданого размера), И мне бы хотелось чтобы виджет родитель принимал размер виджета ребенка(виджета который есть внутри него и имеет динамический размер)

Очень хотелось бы чтоб был простой способ реализации задуманого
код

#include "errordialog.h"
#include "errorstatus.h"
#include "ui_errorstatus.h"
#include <QDebug>
#include <QTextBrowser>

ErrorStatus::ErrorStatus(QWidget *parent) :
    QWidget(parent),
    MenuElement(":/icons/img/error.png", nullptr, "0"),
    ui(new Ui::ErrorStatus)
{
    ui->setupUi(this);
    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &ErrorStatus::checkForErrors);
    timer->start(settings.ErrorHandlerTimeOut.get()*1000);
    Global::errorHandler = this;
    agregator = new ErrorAgregator(this);
    ui->scrollArea->setWidgetResizable(true);

    ui->scrollWidget->setStyleSheet("QWidget#scrollWidget {background-color: #282828; border-left: 2px solid rgb(85,150,255);}");//40,40,40
    ui->scrollArea->setStyleSheet("QScrollArea { background-color: #282828; border: 0;}");//40,40,40
}

void ErrorStatus::checkForErrors() {
    clear(this->ui->horizontalLayout);
    Global::Alarm::turnOff(); //alarm noise
    QList<errorWidget*> textes;


    short errCount=0;
    foreach(ErrorAble *eventer, eventers) { //Przejdź po wszystkich eventerach (error eventerach)
        foreach(Error *error, eventer->errors) { //Przejdź po wszystkich błędach eventerów
            auto widget = new errorWidget(error, this->ui->contentWidget); //Stwórz widget błędu
            if(error->showInBar) { //Czy błąd ma być pokazany w status barze
                textes.push_front(widget);
                errCount++; //Zliczanie ilości błędów
            }
            if(!error->clicked && error->noticable) {
                if(settings.production.get()) Global::Alarm::turnOn(); //alarm noise
            }
            if(error->noticable && !error->noticed){ //Jeżeli ma być wyświetlony, a nie został
                agregator->add(error);//Wyświetl poprzez dodanie do listy
                error->noticed = true; //Ustaw jako wyświetlony
                Global::logger->add(*error); //Zloguj error
                if(!error->showInBar) eventers.removeOne(eventer);
            }
            if(error->lifetime>0) { //Jeżeli czas życia jest nieskończony
                error->currentLifeTime--; //Skróćmy czas życia
                if(error->currentLifeTime<=0) eventer->cancelError(*error); //Jeżeli czas życia dobiegł końca usuń błąd z listy
            }
        }
    }

    if(errCount>0) getIcon()->setText("Błędy: "+QString::number(errCount)); //Zmień liczbę w menu jeżeli wystąpiły błędy
    else getIcon()->setText("Brak błędów"); //Jeżeli nie wykryto błędów wyświetl ich brak


    foreach(errorWidget *widg, textes) {
        this->ui->horizontalLayout->addWidget(widg);
    }
    this->ui->horizontalLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
}

void ErrorStatus::clear ( QLayout* layout )
{
    QLayoutItem* item;
    while ( ( item = layout->takeAt( 0 ) ) != nullptr )
    {
        delete item->widget();
        delete item;
    }
    update();
}

void ErrorStatus::addEventer(ErrorAble *eventer) {eventers.append(eventer);}
void ErrorStatus::removeEventer(ErrorAble *eventer) {eventers.removeAll(eventer);}

void ErrorStatus::abort()
{
    foreach(ErrorAble *eventer, eventers) {
        eventer->resetErrors();
    }
}

QWidget *ErrorStatus::getView(){return this;}
ErrorStatus::~ErrorStatus(){delete timer;delete ui;}
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

1
Evgenii Legotckoi
  • Sept. 21, 2020, 4:03 a.m.

Добрый день!

Все классы, которые наследованы от QObject имеют метод parent() , вы можете попробовать сделать static_cast парент объекта и установить его размеры по контенту. Для этого служит метод adjustSize() .
Примерно так

static_cast<QWidget*>(parent())->adjustSize();

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    AD

    C ++ - Test 004. Pointers, Arrays and Loops

    • Result:50points,
    • Rating points-4
    m

    C ++ - Test 004. Pointers, Arrays and Loops

    • Result:80points,
    • Rating points4
    m

    C ++ - Test 004. Pointers, Arrays and Loops

    • Result:20points,
    • Rating points-10
    Last comments
    ИМ
    Игорь МаксимовNov. 22, 2024, 11:51 a.m.
    Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    Evgenii Legotckoi
    Evgenii LegotckoiOct. 31, 2024, 2:37 p.m.
    Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    A
    ALO1ZEOct. 19, 2024, 8:19 a.m.
    Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
    ИМ
    Игорь МаксимовOct. 5, 2024, 7:51 a.m.
    Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
    d
    dblas5July 5, 2024, 11:02 a.m.
    QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
    Now discuss on the forum
    m
    moogoNov. 22, 2024, 7:17 a.m.
    Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
    Evgenii Legotckoi
    Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
    t
    tonypeachey1Nov. 15, 2024, 6:04 a.m.
    google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
    NSProject
    NSProjectJune 4, 2022, 3:49 a.m.
    Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

    Follow us in social networks