![]() |
|
![]() ![]() ![]() |
|
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Как на QFrame установить фоновый цвет?
Копать в такую сторону:
или есть по проще? |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Если цвет не стандартный, то надо изменять нужный цвет в palette.
Только устанавливается она методом setPalette(QPalette&), a setBackgroundRole принимает QPalette::ColorRole, это например если нужно сделать окна стандартным цветом текста итд. setPalette скопирует себе палетту, так что динамически выделять память тут вообще ненадо. И в любом случае не нужно вызывать деструктор напрямую, для этого есть delete. Вот например как это (ну немного больше чем только цвет) делает Qt Designer:
-------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
nickless, очередное спасибо. Но смотри, я сделал так:
т.е. в принципе, остальные строчки, что ты указал не нужны? Или я не прав?
А destroy() тогда зачем? Чем плохо напряую? delete требудет же указатель... |
||||
|
|||||
nickless |
|
||||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Если работает как надо, значит не нужны, тот код сгенерирован Qt Designer-ом, он там кроме цвета еще чего-то делает. delete автоматически вызывает деструктор, а потом освобождает память выделенную для самого класса, если вызвать деструктор напрямую, он освободит память возможно выделенную в конструкторе итд. НО память выделенную под сам класс он не освободит. Вот пример:
С delete всё освобождается:
А только с вызовом деструктора утекают 4 байта, т.е. sizeof(A):
Кстати объекты Qt обычно сами удаляют друг друга, например если создать QBoxLayout и присвоить его чему-нибудь, удалять этот класс не надо, тут надо смотреть в документации. Это сообщение отредактировал(а) nickless - 10.8.2007, 22:41 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||||
|
|||||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Для использования delete обязательно объявлять переменую как указатель, или можно, как объект?
Если честно, не совсем понял о чем ты. Ты имеешь ввиду, что Qt сам удаляет "потомков"? |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Всё что было создано new надо удалять с помощью delete, а если переменная - объект, её делитом удалять не надо (да и не получится), она сама уничтожится когда закончится скоп (scope т.е. функция, блок итд).
Не потомков а скорей детей, т.е. допустим есть QFrame, а на ней куча всяких контролов. При создании любого контрола, ему передаётся указатель на родителя "parent", этот родитель убивает всех детей при удалении. Некоторые функции перенимают владение объектами, которых ей передают, а некоторые нет, это надо смотреть в документации. Это сообщение отредактировал(а) nickless - 10.8.2007, 22:42 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Ясно, значит в моем случае delete не нужен, т.к. указателей я не использую. Ну я это и имел ввиду, выразился только, конечно, не корректно. Спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |