Seite 1 von 1

QTableView

Verfasst: 1. August 2011 14:29
von janmerkschien
Hey,

ich habe ein QTableView das ich in ein QHBoxLayout adde.
es gelingt mir nur leider nicht die größe der tabelle festzulegen die sie beim aufrufen haben soll.

hier der code :

Code: Alles auswählen

       QSqlQuery query;
       model = new QSqlQueryModel(this);
       QTableView *view = new QTableView;

       view->setModel(model);
       view->setColumnWidth(0,40);
       view->setColumnWidth(1,80);
       view->setColumnWidth(2,80);
       view->setColumnWidth(3,80);
       view->setColumnWidth(4,50);
       view->setColumnWidth(5,80);


       slider = new QSlider( Qt::Vertical, this );

       QVBoxLayout *buttonBox = new QVBoxLayout;
       buttonBox->addWidget(saveButton);
       buttonBox->addWidget(quitButton);

       QHBoxLayout *mainLayout = new QHBoxLayout;
       mainLayout->addWidget(view);
       mainLayout->addWidget(slider);
       mainLayout->addLayout(buttonBox);
       setLayout(mainLayout);

Re: QTableView

Verfasst: 1. August 2011 18:24
von franzf
Beim Einfügen ins Layout (und vor allem dem späteren show()) kommt es zu einem resize der view. Da werden sicher auch die columns angepasst.
Anstatt fixer Größen würde ich im Übrigen auf QTableView::resizeColumnsToContents() [SLOT] zurück greifen.

Re: QTableView

Verfasst: 2. August 2011 09:08
von janmerkschien
danke für die schnelle Antwort
aber die Tabelle und die Spalten und Zeilen sind groß genug.
nur leider wir die Tabelle an sich nicht groß genug dargestellt.
deshalb wäre es cool wenn mir wer sagen könnte wie ich die Größe des Fensters ändere.
Im Anhang ein Bild vom Problem.

Re: QTableView

Verfasst: 2. August 2011 09:54
von franzf
janmerkschien hat geschrieben:deshalb wäre es cool wenn mir wer sagen könnte wie ich die Größe des Fensters ändere.
Englisch für "Größe ändern" ist resize. Dummerweise geht das resize bei einem Widget in einem Layout ins leere (das Layout kümmert sich um die Größe).
Deshalb das Hauptfenster (also das Toplevel-QWidget, das später die Fensterrahmen bekommt) resizen.
Oder: von QTableView ableiten und sizeHint() implementieren (oder nur von QWidget ableiten und ein QTableView managen, letzteres wäre aus OOP-Sicht schöner).

ABER (und das ist dick) ich würde das nicht machen. Ein statisches, unreflektiertes Anpassen von Fenstern per Code kann bei dir jetzt ganz passabel funktionieren. Lass das Programm aber mal auf einem Rechner mit kleinerem Monitor laufen (z.B. geht DEIN Monitor kaputt und du musst den alten 800x600er anschließen :P), und schwupps ist das Fenster breiter als der Bildschirm. Gott hat nicht umsonst Hirn, Hände und Scrollbalken erschaffen ;) Wenn ein User mit der gescrollten View nicht zurecht kommt, soll er doch einfach selber das Fenster vergrößern.

Re: QTableView

Verfasst: 2. August 2011 10:27
von janmerkschien
danke aber das klappt i-wie nicht . .

Code: Alles auswählen

 table *child = new table;
     mdiArea->addSubWindow(child);
     child->resize(1000,1000);
     child->show();
das ist jetzt die code stelle wo ich das Fenster erstelle aber es bleibt klein . .
und danke für den tip das ich das nicht größer machen soll falls mein monitor stirbt usw.
aber ich will das ja nicht riesig machen ;)

Re: QTableView

Verfasst: 2. August 2011 10:35
von franzf
Dann schau in die Doku, was QMdiArea::addSubWindow() zurückgibt. DAS ist dann das Widget, mit dem du arbeiten willst.

Re: QTableView

Verfasst: 2. August 2011 10:46
von janmerkschien
Danke hat jetzt geklappt :)