Russian Qt Forum
Сентябрь 30, 2024, 10:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виджеты KDE  (Прочитано 5697 раз)
andi
Гость
« : Январь 23, 2007, 07:51 »

Незнаю уместно ли здесь обсуждение виджетов созданных ребятами из КДЕ, тем не менее попробую.
Хочу использовать KDoubleSpinBox.
При старте программы вылетает SEGSEGV
Смотрю стек в отладчике. Затык происходит в конструкторе виджета.
Вложенность такая:
Устанавливаем setMaxValue()
потом идут всякие проверки на диапазон в родительских методах
На самом верху стоит функция
KLocale::doFormatInit()
Сегофолтится именно в ней.
Теперь сам вопрос, не уж то ребята (кде-ешные) до сих пор не научились нормально цифры по формату рисовать?
Есть ли способ безболезненного обхода?
Или мож у кого завалялся нормальный спин-бокс с вещественным value?

добавлено спустя 19 минут:

 Пардон, забыл добавить что Qt3.3.6 КДЕ 3.4.2
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Январь 23, 2007, 14:39 »

а зачем использовать KDE элементы?
переносимость нарушается

а так - если у ребят работает в KDE и у тебя должно
Записан
andi
Гость
« Ответ #2 : Январь 24, 2007, 05:26 »

Возможно.
Тогда, если несложно, в дезигнере кинь на форму вышеуказанный виджет.
Собери его в приложение и запусти. Мне просто интересно должен ли он работать "из упаковки"
или нужно долго и упорно его затачивать.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Январь 24, 2007, 12:01 »

к сожалению я kde компоненты не пользую
у меня их в Debian нет Грустный
Записан
andi
Гость
« Ответ #4 : Январь 24, 2007, 12:27 »

свезло так свезло!
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Январь 24, 2007, 13:51 »

я как то раз пытался сделать spin c float величиной
в конце экспериментов понял что этого точно мне не нада Улыбающийся
такого элемента
Записан
andi
Гость
« Ответ #6 : Январь 25, 2007, 12:23 »

Вобщем я взял исходники QSpinBox и QSpinWidget и без всякого QRangeControl переправил там все int на double и вроде как заработало (но только на домашнем компе. slack11, KDE3.5.4, qt3.3.6). Принес на работу (slack10.2, KDE3.4.2, qt3.3.4) пересобрал, выскочил SIGSEGV
в обработчике void SpinWidget::paintEvent( QPaintEvent * )
в вызове:
style().drawComplexControl( control, &p, this,fr, cg,flags,   (uint)QStyle::SC_All, active );

Судя по сообщения отладчика, при отрисовке кнопок, он пытается узнать, что рисовать на кнопках (стрелки или +-) и лезет узнавать в QSpinWidget.
Вот такая вот фигня

добавлено спустя 3 часа 26 минут:

 В продолжении.
Дабы не ковырять Qt на уровне ее ядра, заменил drawComplexControl на свой вызов,
в котором сам жестко рисую бордюр и стрелки.
Анимации нажатий и наезда мышкой не стало (в сравнении с исходным QSpinBox).
Зато выглядит как спинбокс и работает соответственно.
Тему можно считать закрытой
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 23.