標題或多或少地說明了一切。我創建一個小部件,將其添加到QTabWidget,當我切換到新的選項卡時,應用程序崩潰。Qt應用程序在向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
}
如果我刪除它墜毀的那一行,它會成功創建新的選項卡,但會在我登錄時崩潰ually切換到它。
它一定是愚蠢的,但我找不到錯誤。幫助請
您的調試器對此行發生了什麼說? – cmannett85
@ cbamber85只有「程序意外完成」,Qt以某種方式管理錯誤,它只是關閉。但是當我嘗試使用一個我認爲是由指針指向的對象的方法時,我認爲像這樣的事情發生在時間之前,但事實上它是一個空指針。 – Topo
@頂部這聽起來像你沒有調試。在QtCreator中,通過按F5而不是Ctrl-R來啓動調試模式。用「你的調試器」,cbamber85並不意味着QtCreator,而是GDB本身。這是一個調試器,由QtCreator在調試模式下運行,並告訴QtCreator(然後告訴你)發生了什麼樣的錯誤。您還可以設置斷點,逐步執行代碼並檢查變量值(當然,發生錯誤之前)。另一個選擇是使用qDebug打印出變量。候選人是'this'指針,'pref'和'index'變量;檢查它們的值。 – leemes