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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Один и тот же код в windows и linux  (Прочитано 6741 раз)
UVV
Гость
« : Июль 31, 2009, 09:24 »

Есть приложение используещее плагины. В плагине вызывается функция из основного приложения.
Под linux всё обрабатывается без проблем. В windows же функция возвращает ноль и приложение падает.
Кто-нибудь сталкивался с подобным?

Да, та же самая функция ещё используется в статическом плагине и нормально отрабатывает и под linux и под windows.
Записан
f-r-o-s-t
Гость
« Ответ #1 : Июль 31, 2009, 09:40 »

А тебе qt на  windows случайно не в статической сборке ?
Записан
UVV
Гость
« Ответ #2 : Июль 31, 2009, 09:46 »

Не, статика вообще с плагинами не умеет работать.
Да, на обоих системах Qt 4.5.1.
Записан
f-r-o-s-t
Гость
« Ответ #3 : Июль 31, 2009, 09:49 »

Ну тогда расскажи хоть примерно что за функция.
Записан
UVV
Гость
« Ответ #4 : Июль 31, 2009, 09:56 »

Код
C++ (Qt)
QString myClass::getCurrentText() const
{
   FileEditor* pActiveEditor = activeEditor();
   return pActiveEditor->toPlainText();
}
 

FileEditor - наследник от QTextEdit.
Записан
BRE
Гость
« Ответ #5 : Июль 31, 2009, 10:01 »

Код
C++ (Qt)
QString myClass::getCurrentText() const
{
   FileEditor* pActiveEditor = activeEditor();
   return pActiveEditor->toPlainText();
}
 

FileEditor - наследник от QTextEdit.
Боюсь спросить, а в activeEditor() что написано.  Подмигивающий
Записан
UVV
Гость
« Ответ #6 : Июль 31, 2009, 10:40 »

Улыбающийся
Код
C++ (Qt)
QMdiArea*       m_workspace;
...
FileEditor* myClass::activeEditor() const
{
   QMdiSubWindow* activeSubWin = m_workspace->activeSubWindow();
   if (activeSubWin)
       return fileEditor(activeSubWin);
 
   return 0;
}
 
FileEditor* myClass::fileEditor(const QMdiSubWindow* w) const
{
   return qobject_cast<FileEditor*>(w->widget());
}
 
Записан
SASA
Гость
« Ответ #7 : Июль 31, 2009, 14:25 »

Какая функция возвращает 0 m_workspace->activeSubWindow() или  myClass::fileEditor?
Записан
developer
Гость
« Ответ #8 : Июль 31, 2009, 15:43 »

Код:
C++ (QT)
QString myClass::getCurrentText() const
{
    FileEditor* pActiveEditor = activeEditor();
    return pActiveEditor->toPlainText();
}

Вот здесь мне что-то не нравится:  если activeEditor() возвратит 0 то все равно призойдет вызов pActiveEditor->toPlainText(), вот тут то оно и падает, просто по разному обрабатывается на разных системах.
Записан
UVV
Гость
« Ответ #9 : Июль 31, 2009, 18:02 »

Итак, проблема была в qobject_cast().
Решение здесь http://www.qtcentre.org/forum/f-qt-programming-2/t-casting-result-of-qwidgetstack-currentwidget-5037.html
Записан
SASA
Гость
« Ответ #10 : Август 04, 2009, 16:40 »

Так чё нужно сделать сделать, чтобы qobject_cast() для классов из длл срабатывал в основной проге?
P.S. из http://www.qtcentre.org/forum/f-qt-programming-2/t-casting-result-of-qwidgetstack-currentwidget-5037.html не понял.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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