АК
Шілде 25, 2016, 5:19 Т.Қ.
Проблема с QSpacerItem
c++, QSpacerItem, Qt
Добрый день. Появляется окно “Прекращена работы программы…” после закрытия окна. Это связано с неправильным использованием указателей?
Это происходит, когда в один QHBoxLayout добавляю один и тот же QSpaserItem. Когда добавляю его только один раз, подобной ошибки не происходит.
Ниже код как пример. Разве мне следует создавать два разных QSpaserItem, для того чтобы добавить его слева и справа и не выводило подобной ошибки?
В Qt 5.3.2 подобной ошибки не возникало, это происходит в Qt 5.5.1.
#include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { button = new QPushButton("Слева и справа Spaser"); hbox = new QHBoxLayout(this); spaser = new QSpacerItem(100, 0); hbox->addSpacerItem(spaser); hbox->addWidget(button); hbox->addSpacerItem(spaser); } Widget::~Widget() { }
0
252
Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Соңғы пікірлер
- AKСәуір 1, 2025, 11:41 Т.Ж.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPНаурыз 9, 2025, 4:14 Т.Қ.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- Енді форумда талқылаңыз
- DTСәуір 14, 2025, 3:38 Т.Қ.Всем привет! На Qt 6.8 MinGW пытаюсь сделать управление подключением WiFi из программы. Пока делаю поддержку Windows, но так же хочу в дальнейшем внедрить и поддержку Linux/MacOS. Для…
- fАқп. 15, 2025, 1:46 Т.Қ.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Добрый день.
Вообще сама по себе идея вставлять один и тот же объект в два места в графическом интерфейсе является плохой идеей. Если вы попробуете провернуть тоже самое, например, с QLabel, то в итоге увидите в графическом интерфейсе всё равно один объект QLabel, и он будет находиться в том месте, куда был добавлен последний раз.
Почему такой подход работал в Qt5.3.2, я не знаю. Скорее всего это был баг, который пофиксили. Как вариант, там происходило неявное копирование экземпляра, поэтому и работало, но это могло быть чревато утечками памяти.
В Qt 5.7 также выпадает такая же ошибка, что и у Вас. Поэтому создавайте два объекта QSpacerItem. Это правильный подход в том числе и с точки зрения ООП с графическим интерфейсом. Ну не может один и тот же объект существовать одновременно в двух местах.