Название более или менее говорит обо всем. Я создаю виджет, добавляю его в QTabWidget, и когда я переключаюсь на новую вкладку, приложение падает.Qt App Crashing после добавления вкладки в QTabWidget
preferencestab.h (Виджет я хочу добавить)
#ifndef PREFERENCESTAB_H
#define PREFERENCESTAB_H
#include <QWidget>
#include "tab.h"
class PreferencesTab : public QWidget
{
Q_OBJECT
public:
explicit PreferencesTab(QWidget *parent = 0);
~PreferencesTab();
int num;
private:
private slots:
};
#endif // PREFERENCESTAB_H
preferencestab.cpp
#include "preferencestab.h"
#include <QDebug>
PreferencesTab::PreferencesTab(QWidget *parent) : QWidget(parent)
{
}
PreferencesTab::~PreferencesTab()
{
}
tabmanager.cpp (подкласс QTabWidget и где я добавить новую вкладку)
...
void TabManager::openPreferences()
{
PreferencesTab *pref = new PreferencesTab();
int index = this->addTab(pref, "Edit");
this->setCurrentIndex(index); // It crashes on this line
}
Если я удаляю линию, где она разбилась, ей удаётся создать новую вкладку, но она падает, когда я человек переключитесь на него.
Это должно быть что-то глупое, но я просто не могу найти ошибку. Help Please
Что ваш отладчик говорит о том, что происходит на этой линии? – cmannett85
@ cbamber85 Только «Программа неожиданно закончила», Qt как-то управляет ошибками, и она просто закрывается. Но я думаю, что что-то подобное произошло с ними раньше, когда пытались использовать метод объекта, который, как я думал, был указан указателем, но на самом деле это нулевой указатель. – Topo
@Topo Это звучит так, будто вы не отлаживаете. В QtCreator вы запускаете режим отладки, нажимая F5 вместо Ctrl-R. С помощью «вашего отладчика» cbamber85 не означал QtCreator, а сам GDB. Это отладчик, который запускается QtCreator в режиме отладки и сообщает QtCreator (который затем говорит вам), какая ошибка произошла. Вы также можете установить точки останова, выполнить свой код и проверить значения переменных (до того, как, конечно, произойдет ошибка). Другой вариант - распечатать переменные с помощью qDebug. Кандидаты - это указатель 'this',' pref' и переменная 'index'; проверьте их значения. – leemes