qt; segmentation fault



  • Nun erst einmal die Hintergründe meines Problems:
    Ich bin dabei ein Texteditor zu proggen... Lässt sich so weit auch kompilieren aber beim starten kommt der Fehler "segmentation fault ". Also greife ich auf Speicher zu, der meinem Programm gehört. Ich hab herausgefunden, dass es an "QTabWidet::currentWidget()" liegt, aber den Fehler krieg ich einfach nicht behoben. Der Code:

    [cpp]
    //Konstruktor der Klasse "menu"
    
    /*
    *Dies ist ein Ausschnitt, aber es läuft alles nach demselben Muster ab:
    *Die Aktionen (vorher deklariert) werden den jeweiligen Menus            hinzugefügt(ebenfalls vorher deklariert). 
    *tab->currentWidget deshalb, weil die Aktion im aktuellen Textfeld ausgeführt werden soll, dass sich im Tab befindet.
    *Der Zeiger "tab" wird dem Konstruktor als Parameter übergeben.
    *Die Slots sind zumm größten Teil selbst geschrieben
    *Der Konstruktor wird in einem Konstruktor einer anderen Klasse aufgerufen
    */
    
    //Menu "File"
    //Action "New" to menu "file"
    m_new_file = file->addAction
    (
        tr("&New"),
        [i][u][b]tab->currentWidget(),[/b][/u][/i] //hier!!
        SLOT(newFile(QTabWidget *tab, QTreeWidget *tree)),
        QKeySequence(tr("Ctrl+N", "File|New"))
    );
    m_new_file->setStatusTip(tr("Creates an empty file"));
    
    //Action "Open" to menu "file"
    m_open_file = file->addAction
    (
        tr("&Open"),
        [i][u][b]tab->currentWidget(),[/b][/u][/i] //hier!!
        SLOT(openFile(QTabWidget *tab, QTreeWidget *tree)),
        QKeySequence(tr("Ctrl+N", "File|Open"))
    );
    m_open_file->setStatusTip(tr("Open an excisting file"));
    [/cpp]
    

    Nun, mal wiede viel Gerede und ein komisches Problem 😉
    Ich hoffe irgendwer hat eine Lösung^^

    mfg energetic



  • Die Funktion currentWidget() gibt dir ja nur einen Zeiger auf das Widget zurück, das im Tabwidget gerade angezeigt wird.

    Wenn dein Code also wegen dem currentWidget() fehlschlägt, muss es wohl daran liegen, dass beim Tabwidget bzw. der aktuellen Seite im Tabwidget etwas ziemlich schief gegangen ist.

    Die Doku sagt folgendes:

    QWidget * QTabWidget::currentWidget () const

    Returns a pointer to the page currently being displayed by the tab dialog. The tab dialog does its best to make sure that this value is never 0 (but if you try hard enough, it can be).

    Anscheinend musst du dich wohl mächtig angestrengt haben, einen solchen Fehler zu produzieren. 😃


Log in to reply