crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Ошибка сегментации при работе с потомками формы.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 20.2.2011, 9:26
 
Цитата(mva @ 20.2.2011, 0:24) *
grdTable = (TableView*)formWidget->findChild<QTableView*>("tableView");

с какой целью ты пользуешься Си-подобным приведением типа, если судя по документации к функции findChild должно работать так:
grdTable = formWidget->findChild<TableView*>("tableView");

по идее если обЪект с данным именем не найден то функция вернёт нулевой указатель на тип QTableView а ты его принудительно приводишь к типу TableView* в итоге все равно получить ноль должен.

может стоит добавить проверку : найден ли обЪект с данным именем? а дальше уже разбираться почему программа падает.
mva Дата 20.2.2011, 0:24
  Доброго времени суток всем!

Создаю форму с помощью такого кода:
    QFile file(fileName + ".ui");
    if (file.open(QIODevice::ReadOnly)) {
        QUiLoader loader;
        loader.addPluginPath("./plugins/");
        QWidget* widget = loader.load(&file);
        file.close();
        if (QString(widget->metaObject()->className()).compare("QDialog") == 0) {
            formWidget = (QDialog*)widget;
            formWidget->setParent(pwgt);
            formWidget->setVisible(false);
            formWidget->setWindowFlags(Qt::Window | Qt::Dialog | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowContextHelpButtonHint);
            ...
        }
        ...
    }


Все объекты на форме оформлены в виде плагинов. Проблема в том, что программа иногда спотыкается по ошибке сегментирования на следующей строчке кода:

grdTable = (TableView*)formWidget->findChild<QTableView*>("tableView"); ,

который ищет объект типа TableView на этой форме. Именно иногда, не всегда.

Что посоветуете сделать в такой ситуации? Может быть что-то в коде загрузки формы подправить? Что можно еще предпринять?


Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 14.11.2019, 1:34