KM
Sept. 21, 2020, 12:19 p.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;}
2
252
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
- Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Добрый день!
Все классы, которые наследованы от QObject имеют метод parent() , вы можете попробовать сделать static_cast парент объекта и установить его размеры по контенту. Для этого служит метод adjustSize() .
Примерно так