Seite 1 von 1

Einfache Applikation in MainWindow umgestalten

Verfasst: 9. Juli 2007 00:54
von TobiG
Hallo zusammen,

ich bin seid einiger Zeit dabei mich mit QT zu beschäftigen, nun sitze ich schon eine ganze Zeit an folgenden Problem - ich hab eines der Examples ein wenig umgearbeitet (Sorted Item View) und will dies nun in ein MainWindow einfügen

Code: Alles auswählen

#include <QtGui>

#include "monitor.h"


int main(int argc, char *argv[])
{
        QApplication app(argc, argv);

        //MainWindow mainWin;
        //mainWin.show();

        QFile file(":/default.txt");
        file.open(QIODevice::ReadOnly);
        TreeModel model(file.readAll());
        file.close();

        QSortFilterProxyModel sortingModel;
        sortingModel.setSourceModel(&model);

        QTreeView sortedView;
        sortedView.setModel(&sortingModel);
        sortedView.setWindowTitle(QObject::tr("Monitor"));
        sortedView.header()->setSortIndicator(1, Qt::AscendingOrder);
        sortedView.header()->setSortIndicatorShown(true);
        sortedView.header()->setClickable(true);
        //sortedView.header()->hide();
        sortedView.setRootIsDecorated(false);
        sortedView.show();

        return app.exec();
}
So wird mir das 1a dargestellt - nun habe ich mir ein MainWindow dazu gebastelt

Code: Alles auswählen

MainWindow::MainWindow()
{
    QFile file(":/test.txt");
    file.open(QIODevice::ReadOnly);
    model = new TreeModel(file.readAll());
    file.close();

    QSortFilterProxyModel sortingModel;
    sortingModel.setSourceModel(model);

    sortedView = new QTreeView();
    sortedView->setModel(&sortingModel);
    sortedView->header()->setSortIndicator(1, Qt::AscendingOrder);
    sortedView->header()->setSortIndicatorShown(true);
    sortedView->header()->setClickable(true);
    sortedView->setRootIsDecorated(false);

    setCentralWidget(sortedView);	
    setWindowTitle(QObject::tr("Monitor"));

    createActions();
    createMenus();
    createToolBars();

    readSettings();
    setCurrentFile("");
}
Hierbei wird zwar das Hauptfenster angezeigt aber das zentrale Widget ist leer.

Kann mir mal jemand auf die Sprünge helfen?

Besten Dank, Tobias!

Verfasst: 9. Juli 2007 09:07
von upsala
Du nimmst deiner View am Ende der Funktion das Model wieder weg. Dann kann er auch nichts mehr darstellen.

Verfasst: 9. Juli 2007 11:51
von TobiG
Hallo, besten Dank für die schnelle Antwort, aber so richtig viel kann ich damit nicht anfangen :? Womit nehme ich dem View denn das Model weg?

Verfasst: 9. Juli 2007 12:19
von upsala
Wie lange denkst du, daß dieses Model 'lebt'?
QSortFilterProxyModel sortingModel;

Verfasst: 9. Juli 2007 13:58
von TobiG
Gute Frage, ich weiss es nicht! Warscheinlich bis zum Ende der Funktion. Ich habe das einfach so übernommen ohne darüber nachzudenken! Was müsste ich denn ändern, damit ich es nicht weg nehme?

Edit:

Alles klar - ich nehme die Frage schnell zurück ich weiss worauf die hinaus wolltest! Besten Dank für die schnellen und guten Antworten! :D