Seite 1 von 1

QDockWidget Ausrichtungsproblem

Verfasst: 27. Oktober 2011 11:54
von DyXe
Hallo zusammen :)

Ich habe mein aktuelles Projekt eigentlich fertig, allerdings möchte ich nun noch ein paar kleine Schönheitsänderungen vornehmen. Ich wollte QDockWidgets einbauen, damit man die Fenster anders anordnen oder auch herausschieben kann. Allerdings gibts beim größer ziehen der Anwendung ein Problem. Die Widgets verändern sich in der Länge, aber nicht in der Breite. Hat jemand eine Idee wie man das ändern kann? Hier 2 Screenshots.

Normal:
Bild

Länger&Breiter gezogen:
Bild

das linke ist docked left
und die anderen beiden docked right

Re: QDockWidget Ausrichtungsproblem

Verfasst: 28. Oktober 2011 19:30
von Christian81
Und in der Mitte ist das um was man die Dockwidgets normalerweise anordnet - also wo ist das Problem.
Du suchst wohl eher Splitter ...

Re: QDockWidget Ausrichtungsproblem

Verfasst: 28. Oktober 2011 19:48
von DBGTMaster
Hallo,

würde gerne deinen Source Code in betracht ziehen, bin in letzter Zeit schon dabei, zu studieren, wie man am besten in QT mit SQLs umgeht (sprich: automatische Fehlerbehandlung co.)..
Würde daher interessieren, wie du das gelöst hast.

danke :)!

Re: QDockWidget Ausrichtungsproblem

Verfasst: 2. November 2011 08:52
von DyXe
Werde es nun mit Splittern versuchen zu lösen, dann kann man zwar die Fenster nicht mehr herausziehen, aber das ist ja nicht so wichtig.

Leider darf ich dir den Quelltext nicht geben, da es ein Projekt ist, welches ich für die Firma mache.
Mit QListView und QTableView ist dies allerdings sehr einfach.

Zuerst erstellst du ein QStringListModel und weist ihm die Tabellen der Datenbank zu:

Code: Alles auswählen

QStringListModel stringListModel = new QStringListModel(this);
stringListModel->setList(database.tables());
Anschließend verbindest du dein QListView mit dem QStringListModel

Code: Alles auswählen

ui.listView->setModel(stringListModel);
Nun musst du nur noch die gewünschten Tabellen in einem QTableView öffnen, welche in meinem Fall die angeklickte Tabelle ist:

Code: Alles auswählen

/****************************************************************************/
/*	on_listView_clicked(const QModelIndex &index)							*/
/*																			*/
/*	Function:	fill the tableView with the contents						*/
/*																			*/
/****************************************************************************/
void MainClass::on_listView_clicked(const QModelIndex &index)
{
    //clean up the tableModel
    if(this->mTableModel)
    {
        delete this->mTableModel;
        this->mTableModel=NULL;
    }

    //create a new tableModel
    mTableModel = new QSqlTableModel(this,database);
    ui.tableView->setModel(mTableModel);


    //clean up the tableView
    ui.tableView->clearSpans();

    //set the tableModel
    mTableModel->setTable(index.data().toString());
    mTableModel->select();
}
Ich hoffe ich konnte dir etwas helfen :)

lg Daniel