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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нарушение прав доступа при чтении "0x00000188"  (Прочитано 2951 раз)
izhack
Гость
« : Май 29, 2013, 17:07 »

Получаю сабж при использовании boxFragment в методе readChapter():
Код:
boxFragment->addItem("1");

Файл domeZ.h
Код:
class domeZ : public QWidget
{
Q_OBJECT
public:
domeZ(QWidget *parent = 0, Qt::WFlags flags = 0);
~domeZ();
        QString GetData(QString path);
QString readChapter();

private:
QComboBox* boxFragment;
};

Файл domeZ.cpp
Код:
domeZ::domeZ(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
QHBoxLayout* Textlayout = new QHBoxLayout;
QHBoxLayout* Hlayout = new QHBoxLayout;
  QVBoxLayout* mainlayout = new QVBoxLayout;
Hlayout->addWidget(boxFragment);
mainlayout->addLayout(Hlayout);

        bibletext = readChapter();
   
setLayout(mainlayout);

QComboBox* boxFragment = new QComboBox;
}

QString domeZ::readChapter()
{
        ...
boxFragment->addItem("1");
        ...
return textChapter;
}
Записан
mutineer
Гость
« Ответ #1 : Май 29, 2013, 17:17 »

1) Hlayout->addWidget(boxFragment); - boxFragment еще не инициализирован и в лейаут ты добавляешь какую-то фигню

2)boxFragment->addItem("1"); boxFragment на этом этапе еще не инициализирован ничем, поэтому чему ты там пытаешься айтем добавить одному рандому известно

3) QComboBox* boxFragment = new QComboBox; - какая-то бессмысленная строчка
Записан
izhack
Гость
« Ответ #2 : Май 30, 2013, 09:25 »

Спасибо за помощь.
Цитировать
3) QComboBox* boxFragment = new QComboBox; - какая-то бессмысленная строчка
Мы ведь создаем конструктор класса QComboBox - это и есть инициализация.
Заменил на 
Код:
boxFragment = new QComboBox;
Код:
domeZ::domeZ(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
Textlayout = new QHBoxLayout;
Hlayout = new QHBoxLayout;
  mainlayout = new QVBoxLayout;

        boxFragment = new QComboBox;

Hlayout->addWidget(boxFragment);

mainlayout->addLayout(Hlayout);

        bibletext = readChapter();
    
setLayout(mainlayout);
}

QString domeZ::readChapter()
{
        ...
boxFragment->addItem("1");
        ...
return textChapter;
}
Надеюсь так правильно?
« Последнее редактирование: Май 30, 2013, 09:28 от izhack » Записан
mutineer
Гость
« Ответ #3 : Май 30, 2013, 10:02 »

Спасибо за помощь.
Цитировать
3) QComboBox* boxFragment = new QComboBox; - какая-то бессмысленная строчка
Мы ведь создаем конструктор класса QComboBox - это и есть инициализация.

Ты создаешь объект, но указатель на него это локальная переменная и на член класса это влияния не оказывает
Ну вроде бы приведенный код корректен. Работает?
Записан
izhack
Гость
« Ответ #4 : Май 30, 2013, 15:37 »

Да, всё работает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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