Почему в Qt установка таблицы стилей QPushButton постоянно увеличивает выделение памяти?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему в Qt установка таблицы стилей QPushButton постоянно увеличивает выделение памяти?

Сообщение Anonymous »


Я использую Visual Studio 2022, последние версии ISO для C и C++ и Qt. У меня есть файлы заголовков и файлы библиотеки, связанные с моим решением (файлы .lib связаны с решением, а файлы .dll находятся внутри каталога, где находятся исполняемые файлы). ).

Я работаю над своим проектом уже несколько месяцев. Оно стало сложным. Я понял, что у меня есть часть моего проекта, которая постоянно выделяет память в оперативной памяти каждый раз, когда ее вызывают. Несмотря на сложность, я отследил проблему, связанную с настройкой таблицы стилей объектов QPushButton, например: qPushButton.setStylesheet("background-color: green;") .

Вот мой минимальный пример:

#include #include #include #include #include void test(int argc, char* argv[]) { // Инициализируем Qt QApplication::setStyle(QStyleFactory::create("Fusion")); QApplication qApplication = QApplication(argc, argv); QDialog qDialog = QDialog(nullptr); QHBoxLayout qHBoxLayout = QHBoxLayout(&qDialog); qDialog.setLayout(&qHBoxLayout); QPushButton qPushButton1 = QPushButton("Кнопка 1", &qDialog); QPushButton qPushButton2 = QPushButton("Кнопка 2", &qDialog); qHBoxLayout.addWidget(&qPushButton1); qHBoxLayout.addWidget(&qPushButton2); QObject::connect(&qPushButton1, &QPushButton::clicked, [&]() { qPushButton2.setStyleSheet(""); qPushButton1.setStyleSheet("цвет фона: зеленый;"); }); QObject::connect(&qPushButton2, &QPushButton::clicked, [&]() { qPushButton1.setStyleSheet(""); qPushButton2.setStyleSheet("цвет фона: зеленый;"); }); qDialog.exec(); } int main(int argc, char* argv[]) { тест(); } Я пришел к такому выводу, собрав воедино минимальный пример и обратив внимание на окно «Инструменты диагностики». На графиках показано, что память, выделенная моей программой, продолжает увеличиваться каждый раз, когда я нажимаю любую кнопку, и никогда не уменьшается.

Может кто-нибудь объяснить мне, почему это так? Будет ли это проблема Qt или проблема C++? Какой была бы альтернатива этому, если бы не было такого поведения? Моя программа должна работать часами, а может быть, даже днями, когда я ее выпущу, и не могу позволить себе такое поведение.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»