QTableView

Alles rund um die Programmierung mit Qt
Antworten
janmerkschien
Beiträge: 45
Registriert: 5. Juli 2011 10:08

QTableView

Beitrag 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);
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QTableView

Beitrag 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.
janmerkschien
Beiträge: 45
Registriert: 5. Juli 2011 10:08

Re: QTableView

Beitrag 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.
Dateianhänge
tabelle.png
tabelle.png (18.56 KiB) 3156 mal betrachtet
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QTableView

Beitrag 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.
janmerkschien
Beiträge: 45
Registriert: 5. Juli 2011 10:08

Re: QTableView

Beitrag 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 ;)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QTableView

Beitrag von franzf »

Dann schau in die Doku, was QMdiArea::addSubWindow() zurückgibt. DAS ist dann das Widget, mit dem du arbeiten willst.
janmerkschien
Beiträge: 45
Registriert: 5. Juli 2011 10:08

Re: QTableView

Beitrag von janmerkschien »

Danke hat jetzt geklappt :)
Antworten