LINUX.ORG.RU

Передать QLabel'у указатель на строку

 


0

1

Есть вектор QLabel'ов. Эти QLabel'ы могут удаляться из вектора. Следовательно, должны удаляться и строки (текст) в QLabel'ах. Чтобы это сделать, нужно использовать указатели на строки. QLabel не принимает указатели на строки. Что делать? Есть ли альтернативные пути?

Еще раз, есть вектор указателей на QLabel'ы. В функции A я создаю и инициализирую строку, запускаю из нее другую функцию (B), передавая ей ссылку на эту строку. В функции B я создаю указатель на QLabel и пихаю в него ссылку на строку. Потом я помещаю этот указатель на QLabel в вектор указателей на QLabel'ы.

Так вот, мне может понадобиться удалить указатель на QLabel из вектора указателей на QLabel'ы. Но фишка в том, что указатель на QLabel может и удалится, а вот строка не удалится, так как она не указатель на строку. Следовательно, мне надо помещать в указатель на QLabel указатель на строку, а при удалении удалить сначала указатель на строку, а потом и указатель на QLabel.

Куда денется строка, когда завершится функция A. Если QLabel ее скопирует к себе, тогда все понятно, при удалении указателя на QLabel автоматически удалится и его строка. А если нет, то как вообще можно передавать какие-то строки в QLabel в функциях!

Решено

Проверил. Значение текста у указателя на QLabel сохраняется при выходе их области видимости функций. То есть, получается, что QLabel копирует строку к себе. Так же проверил, что эта строка удаляется при удалении самого QLabel (присвоил указателю «a» адрес «text'а» QLabel'а, удалил QLabel и присвоил еще раз, естественно получился SIGSEGV).



Последнее исправление: cetjs2 (всего исправлений: 3)

Следовательно, должны удаляться и строки (текст) в QLabel'ах. Чтобы это сделать, нужно использовать указатели на строки

что?

Stil ★★★★★
()
Последнее исправление: Stil (всего исправлений: 1)

Чтобы это сделать, нужно использовать указатели на строки

Щито? Там в Qt все само удаляется.

no-such-file ★★★★★
()

помещать в указатель на QLabel указатель на строку

- улыбнуло.

После того как отработает функция A, строка у тебя останется в функции B. После того как завершится В строка останется только у QLabel (как я понимаю в QLabel::text). Следовательно при удалении QLabel строка так же удалиться.

Sakura
()
1 марта 2014 г.

Молодец. Серьёзно.

Помню, тоже так развлекался - проверял, правда или не правда то, что в стандартах пишут. Но то давно было.

Добра тебе.

Adonai ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.