Название: Непонятный сегфолт Отправлено: troorl от Июнь 18, 2007, 18:08 Есть самописный виджет, который нужен для выбора цвета. Это простая кнопка, при нажатии на которую появляется диалог QColorDialog. Она меняет свой цвет в зависимости от того, что вернул диалог. Но также мне нужно иметь возможность вручную устанавливать цвет. Вот такой код
Код: void TColorChoser::setColor(QColor color) В самом начале программы, когда устанавливаются начальные значения, он работает, кнопка красится в нужный цвет. Но потом, вызов этого метода с тем же или любым другим значением даёт сегфолт. Я уже не знаю, что делать и куда смотреть. Подскажите, что это за фигня?? Название: Непонятный сегфолт Отправлено: Admin от Июнь 18, 2007, 19:29 мне кажется что дело в том
что pallete ваша локальная функция и гибнет вместе с концом функции вот вызов - тут идет ссылка на обьект, а обьекта то уже и нет) void setPalette ( const QPalette & ) PS: хотя возможно я уже переработал) Название: Непонятный сегфолт Отправлено: pakulo от Июнь 18, 2007, 19:30 QPushButton - а как ты его хочешь в ХР раскрасить со стилем Xp style?
Может попробывать применить setStyleSheet ? и не будет проблем, можно и рамку будет красивую сделать, в зависимости от выбраного цвета )) Название: Непонятный сегфолт Отправлено: Tonal от Июнь 18, 2007, 20:03 А какой-нибудь стек вызовов ты можешь получить?
Или хотя бы точное сообщение об ошибке. Ошибка похожа на обращению по нулевому или неинициализированному указателю. Да, версию Qt и компилера тоже полезно сообщать. ;-) Название: Непонятный сегфолт Отправлено: pastor от Июнь 18, 2007, 20:14 Попорбуй так:
Код:
Название: Непонятный сегфолт Отправлено: troorl от Июнь 18, 2007, 21:00 Люди! Творится что-то дьявольское и непонятное! Для проверки изменил метод на такой:
Код: void TColorChoser::setColor(QColor color) Когда приходит время, мне выскакивает правильный цвет в сообщении. Затем сегфолт... tmp_color объявлен как член класса QColor tmp_color; В конструкторе на всякий пожарный я его инициализирую чёрным цветом. Я уже просто в шоке сижу и ничего не понимаю... Qt-4.2, GCC-4.1.2 Название: Непонятный сегфолт Отправлено: Tonal от Июнь 19, 2007, 08:08 Как пить дать забыл инициализировать виджет и в указателе на него 0 или мусор.
Название: Непонятный сегфолт Отправлено: troorl от Июнь 19, 2007, 11:16 Цитата: "Tonal" Как пить дать забыл инициализировать виджет и в указателе на него 0 или мусор. Не, не то. Виджет уже создался вместе с окошком и уже принял цвет в конструкторе окна, то есть он УЖЕ использовал этот злополучный метод. А сегфолт наблюдается при работе программы, причём при первом же вызове этого тупого метода :cry: Название: Непонятный сегфолт Отправлено: Steven_Orko от Июнь 19, 2007, 11:32 Приведи код конструктора
Название: Непонятный сегфолт Отправлено: Alex03 от Июнь 19, 2007, 11:33 Цитата: "troorl" Цитата: "Tonal" Как пить дать забыл инициализировать виджет и в указателе на него 0 или мусор. Не, не то. Виджет уже создался вместе с окошком и уже принял цвет в конструкторе окна А в том же конструкторе оно случайно не в локальной переменной создаётся (с тем же именем что и мембер). |