Qt: Größe in QWidget dynamich ändern

Qt Programmierung, QML, Qt-Plattformen
Antworten
wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Qt: Größe in QWidget dynamich ändern

Beitrag von wellnestom » Mi Nov 14, 2012 5:26 pm

Hi,
bin noch neu hier und mache meine ersten Versuche mit Qt (C++).
Ich hab folgende Frage: Ich hab mit dem Qt Designer ein QWidget mit einem QGraphicsView erstellt. Wenn jetzt das Fenster mit der Maus größer/kleiner 'gezogen' wird, oder das Fenster auf Fullscreen geht, soll auch der QGraphicsView immer die Größe des Widgets haben. Wie mach ich das? Es muß doch eine Möglichkeit geben die Inhalte eines Fensters (Widget's) dynamisch vergrößern/verkleinern zu können.

Gruß Tom

nufan
Wiki-Moderator
Beiträge: 2448
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Größe in QWidget dynamich ändern

Beitrag von nufan » Mi Nov 14, 2012 7:36 pm

Wie hast du dein Widget erstellt? Ist dein QGraphicsView in einem Layout, das du auf dein Hauptfenster anwendest?
Etwas Beispielcode wäre nicht schlecht ;)

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Größe in QWidget dynamich ändern

Beitrag von wellnestom » Mi Nov 14, 2012 8:00 pm

Erstellt hab ich das mit dem Qt Designer. Also:
Neues Formular / unter "Templates" QWidget ausgewählt / und dann von der WidgedBox den GraphicsView hineingezogen.
Code hab ich noch nicht viel. Nur die Headerdatei und den Quellcode für die Klasse.

Header:

Code: Alles auswählen

#ifndef TACHO_H
#define TACHO_H

#include <QWidget>

namespace Ui {
class Tacho;
}

class Tacho : public QWidget
{
    Q_OBJECT

public:
    explicit Tacho(QWidget*parent = 0);
    ~Tacho();

private:
    Ui::Tacho *ui;

private slots:

};

#endif // TACHO_H
Klasse:

Code: Alles auswählen

#include "tacho.h"
#include "ui_tacho.h"
#include <iostream>

Tacho::Tacho(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Tacho)
{
    ui->setupUi(this);

}

Tacho::~Tacho()
{
    delete ui;
}

und die Qt Designer xml:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Tacho</class>
 <widget class="QWidget" name="Tacho">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>843</width>
    <height>552</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <widget class="QGraphicsView" name="graphicsView">
   <property name="geometry">
    <rect>
     <x>150</x>
     <y>70</y>
     <width>461</width>
     <height>311</height>
    </rect>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

nufan
Wiki-Moderator
Beiträge: 2448
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Größe in QWidget dynamich ändern

Beitrag von nufan » Mi Nov 14, 2012 8:10 pm

Du hast deinen View einfach auf dein Widget gelegt, ohne ein Layout zu verwenden. Das macht dann natürlich beim Ändern der Größe Probleme. Klick mal mit der rechten Maustaste auf dein äußeres Widget, wähle "Lay out" und dann "Lay Out Horizontically" bzw. "Lay Out Vertically" (wenn nur 1 Widget im Layout ist, dann ist das das gleiche).

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Größe in QWidget dynamich ändern

Beitrag von wellnestom » Mi Nov 14, 2012 8:35 pm

Danke! Da hätte ich echt selber drauf kommen müssen. :oops:
Wie krieg ich jetzt noch das Widget dazu immer im Fullscreen, ohne Fensterrahmen und ohne Fensterleiste aufzugehen? Das man also nur noch den View sieht.

Gruß Tom

nufan
Wiki-Moderator
Beiträge: 2448
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Größe in QWidget dynamich ändern

Beitrag von nufan » Mi Nov 14, 2012 8:40 pm

wellnestom hat geschrieben:Danke! Da hätte ich echt selber drauf kommen müssen. :oops:
Dafür ist das Forum da :)
wellnestom hat geschrieben:Wie krieg ich jetzt noch das Widget dazu immer im Fullscreen, ohne Fensterrahmen und ohne Fensterleiste aufzugehen? Das man also nur noch den View sieht.
Gute Frage, das dürfte aufwendiger werden... du müsstest die WindowFlags (http://doc.qt.digia.com/qt/qwidget.html ... Flags-prop) anpassen und Margin/Padding des Layouts und des Container-Widgets ändern. Oder du löst deinen View aus dem Layout, versteckst deinen Container und setzt die WindowFlags des Views. Da müsste ich selber herumprobieren. Versuchs mal selbst und wenn du es nicht schaffst, lad doch bitte mal ein vollständiges und gezipptes Qt-Projekt hoch :)

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Größe in QWidget dynamich ändern

Beitrag von wellnestom » Mi Nov 14, 2012 9:07 pm

Hat geklappt!
Alle Margin's Padding's auf 0, das ganze nicht mit
instanzname.show();
sondern mit
instanzname.showFullScreen();
dann noch im Qt Designer den View ausgewählt, unter QFrame/frameShape = 'No Frame' ausgewählt, und fertig.

Danke für die schnelle Hilfe!!!!!

Antworten