KM
Katty Misik24 сентября 2020 г. 3:27

как скрыть елемент с копии виджета

QPushButton

Добрый день я копирую обект из другого класса, а именно

 auto widget = new errorWidget(error, this->ui->contentWidget); //Stwórz widget błędu

как я могу с копии убрать кнопку(X)? если пишу widget-X или errorWidget ->X QT ее не видит=(
тили хотя бы скрыть ее при этом не лезть в класс где она создавалась.
Просто этот виджет отображаеться в других местах у меня в программе
кстати кнопка создана не динамически а внутри виджета= виджет-виджет-кнопка

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

7
U
  • 24 сентября 2020 г. 6:56
  • (ред.)

Дело в том, что ui класса находится в private-секции... И из-вне доступ получить, не нарушая канонов - не получится) Можно конечно сделать что-то в духе #define private public, но это для истинных извращуг))))

Первое, что пришло в голову:
В конструкторе Вашего errorWidget-виджета добавить булевскую переменную, которая будет собственно отвечать за то, видна ли кнопка Х или не видна)

И кнопка видна будет, когда

 auto widget = new errorWidget(error, this->ui->contentWidget, true); //Stwórz widget błędu

И скрыта, когда

 auto widget = new errorWidget(error, this->ui->contentWidget, false); //Stwórz widget błędu

А чтобы не править ранее работающие вызовы виджета, можно в конструкторе указать значение по умолчанию = true.
Тогда старые вызовы не придется переписывать)
А в новых уже укажете требуемое состояние)
Но я так чую, что придется подсказать еще и что в конструкторе писать? Там подправить-то немного придется... Чего Вы боитесь?)

    KM
    • 28 сентября 2020 г. 5:29
    • (ред.)

    Вы меня не правильно поняли
    мне нужно скрыть X!
    как я могу с копии убрать кнопку(X)? если пишу widget-X или errorWidget ->X QT ее не видит=(

      Evgenii Legotckoi
      • 28 сентября 2020 г. 6:16
      • Ответ был помечен как решение.

      Можете попробовать установить парента для виджета.
      Когда вы создаёте виджет

      new errorWidget(error, this->ui->contentWidget);
      

      То вы передаёте ему parent объект. Полагаю, что это this->ui->contentWidget . parent будет отвечать за то, внутри какого объекта находится создаваемый объект. Чтобы обращаться к созданным вручную виджетам, рекомендую сделать для них переменную, или вектор виджетов, чтобы можно было их куда-то сохранять, а ваше обращение через errorWidget->X не работает именно потому, что нет переменной, куда вы сложили этот виджет или метода, который достал бы созданный виджет из переменной или вектора виджетов.

        U
        • 29 сентября 2020 г. 5:09
        • (ред.)

        Удалить пост нельзя... Поэтому удачки, Катту)

          KM
          • 7 октября 2020 г. 5:57
          • (ред.)

          Help

          include

          include

          include

          include

          include

          include "errorwidget.h"

          include "erroragregator.h"

          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: 5px solid rgb(85,150,255);}");//40,40,40
          ui->scrollArea->setStyleSheet("QScrollArea { background-color: #282828; border: 0;}");//40,40,40
          errorWidget* widg2;
          //errorWidget->X->hide();
          

          }

          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
                      //auto pos1 = this->mapToParent(this->rect().topLeft());
          
                  }
          
                  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;}

            KM
            • 7 октября 2020 г. 6:43

            можеьте написать как это будеь в файлe .H?

              Evgenii Legotckoi
              • 7 октября 2020 г. 17:51

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

                Комментарии

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

                C++ - Тест 004. Указатели, Массивы и Циклы

                • Результат:50баллов,
                • Очки рейтинга-4
                m
                • molni99
                • 26 октября 2024 г. 1:37

                C++ - Тест 004. Указатели, Массивы и Циклы

                • Результат:80баллов,
                • Очки рейтинга4
                m
                • molni99
                • 26 октября 2024 г. 1:29

                C++ - Тест 004. Указатели, Массивы и Циклы

                • Результат:20баллов,
                • Очки рейтинга-10
                Последние комментарии
                i
                innorwall11 ноября 2024 г. 22:12
                Django - Урок 055. Как написать функционал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
                i
                innorwall11 ноября 2024 г. 18:23
                QML - Урок 035. Использование перечислений в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
                i
                innorwall11 ноября 2024 г. 15:50
                Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
                i
                innorwall11 ноября 2024 г. 14:19
                Алгоритм сортировки кучей The role of raloxifene in preventing breast cancer priligy precio
                i
                innorwall11 ноября 2024 г. 13:55
                PyQt5 - Урок 006. Работа с QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
                Сейчас обсуждают на форуме
                i
                innorwall11 ноября 2024 г. 20:56
                добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
                i
                innorwall11 ноября 2024 г. 10:55
                Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                9
                9Anonim25 октября 2024 г. 9:10
                Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
                ИМ
                Игорь Максимов3 октября 2024 г. 4:05
                Реализация навигации по разделам Спасибо Евгений!

                Следите за нами в социальных сетях