QScrollArea geht nicht?!

Alles rund um die Programmierung mit Qt
Antworten
cbodenstein
Beiträge: 4
Registriert: 5. Dezember 2010 17:07

QScrollArea geht nicht?!

Beitrag von cbodenstein »

Hallo,

ich hab vor kurzem mit Qt angefangen und werde mir eventuell auch bald Buch holen um mal ein bischen mehr durchzusteigen...

Aber momentan brauche ich hilfe bei einer QScrollArea
Folgendes will ich erreichen:
Ich hab ein Dialog Fenster, das wie folgt aussehen soll:
---------------------------
| Label Slider SpinBox |
| Label Slider SpinBox |
| Label Slider SpinBox |
| Label Slider SpinBox |
| Label Slider SpinBox |
| Label Slider SpinBox |
| Label Slider SpinBox |
...
...
...
| Label Slider SpinBox |
| |
| OK Abrechen |
---------------------------
Da ich sehr viele Label Slider SpinBox Dingar habe,
möchte ich diese gerne in eine ScrollArea integrieren.

Im QT Creator hab ich nun folgendes gemacht:
Neues Dialog fenster
QScrollArea
->in QScrollArea ein QGridLayout eingefügt
->in QGridLayout ein QGroupBox eingefügt

Die Label Slider SpinBox Kombinationen werden alle dynamisch in die GroupBox eigefügt und die Größe der GroupBox wird berechnet.

Nun erscheint aber kein Scrollbalken und die GroupBox wird abgeschnitten.

Sonst geht alles.

Eigentllich sollte das doch nicht so schwer zu realisieren sein ich hoffe einer kann mir eventuel erklären wie ich das schnell und einfach umsetzen kann
Dateianhänge
beispiel.png
beispiel.png (22.62 KiB) 2951 mal betrachtet
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Der Dialog hat kein Layout würde ich sagen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cbodenstein
Beiträge: 4
Registriert: 5. Dezember 2010 17:07

Beitrag von cbodenstein »

Ok jetzt hat er eins...
Hab es jetzt auch hinbekommen, ich musste nur die größe vom Layout-Widget in der scrollarea ändern...

Eigentlich ganz einfach wenn man es weiß.

Aber eine Frage hätte ich noch:

Wie kann ich das fenster skalierbar machen, so dass das Layout automatisch größer wird und die Buttons immer am unteren rand "kleben"?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Indem man dem Dialog ein Layout gibt ... ohne ui weiss ich nicht was genau Du gemacht hast.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cbodenstein
Beiträge: 4
Registriert: 5. Dezember 2010 17:07

Beitrag von cbodenstein »

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>607</width>
    <height>472</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Studienprojekt</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QPushButton" name="calcButton">
    <property name="geometry">
     <rect>
      <x>480</x>
      <y>380</y>
      <width>81</width>
      <height>31</height>
     </rect>
    </property>
    <property name="text">
     <string>Calculate</string>
    </property>
   </widget>
   <widget class="QTabWidget" name="tabs">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>10</y>
      <width>581</width>
      <height>351</height>
     </rect>
    </property>
    <property name="tabShape">
     <enum>QTabWidget::Rounded</enum>
    </property>
    <property name="currentIndex">
     <number>-1</number>
    </property>
   </widget>
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>30</x>
      <y>380</y>
      <width>81</width>
      <height>31</height>
     </rect>
    </property>
    <property name="text">
     <string>Weights</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>607</width>
     <height>21</height>
    </rect>
   </property>
   <widget class="QMenu" name="menuFile">
    <property name="title">
     <string>File</string>
    </property>
    <addaction name="actionOpen"/>
    <addaction name="actionSave"/>
    <addaction name="separator"/>
    <addaction name="actionPreferences"/>
    <addaction name="separator"/>
    <addaction name="separator"/>
    <addaction name="actionExit"/>
   </widget>
   <widget class="QMenu" name="menuHelp">
    <property name="title">
     <string>Help</string>
    </property>
    <addaction name="actionAbout"/>
   </widget>
   <addaction name="menuFile"/>
   <addaction name="menuHelp"/>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
  <action name="actionOpen">
   <property name="text">
    <string>Open...</string>
   </property>
  </action>
  <action name="actionSave">
   <property name="text">
    <string>Save...</string>
   </property>
  </action>
  <action name="actionExit">
   <property name="text">
    <string>Exit</string>
   </property>
  </action>
  <action name="actionAbout">
   <property name="text">
    <string>About</string>
   </property>
  </action>
  <action name="actionPreferences">
   <property name="text">
    <string>Preferences</string>
   </property>
  </action>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections>
  <connection>
   <sender>pushButton</sender>
   <signal>clicked()</signal>
   <receiver>MainWindow</receiver>
   <slot>on_changeWeight_clicked()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>53</x>
     <y>416</y>
    </hint>
    <hint type="destinationlabel">
     <x>248</x>
     <y>431</y>
    </hint>
   </hints>
  </connection>
 </connections>
 <slots>
  <slot>on_changeWeight_clicked()</slot>
 </slots>
</ui>
Also im grunde einfachfolgende hierarchie:
->gridLayout
-->scrollArea
--->gridLayout
---->GroupBox
->ButtonBox
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Code: Alles auswählen

#include <QtGui>

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

    QGroupBox box("MyBox");
    QGridLayout boxLay(&box);

    for (int i=0; i < 100; ++i)
        boxLay.addWidget(new QLabel(QString::number(i)+ ". ganz langes Label das nix kann"));

    QScrollArea area;
    area.setWidget(&box);
    area.show();

    return a.exec();
}
ups da waren ein paar Antworten schneller ...

Eigentlic eher diese hierarchie:
->gridLayout
-->scrollArea (nix layout hier, sondern setwidget)
---->GroupBox
------->gridLayout
-----------> da alles rein was ins grid soll exklusive der
-->ButtonBox

@edit Buttonbox verschoben
Zuletzt geändert von padreigh am 5. Dezember 2010 19:41, insgesamt 1-mal geändert.
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
cbodenstein
Beiträge: 4
Registriert: 5. Dezember 2010 17:07

Beitrag von cbodenstein »

Ok danke ich werds ma ein wenig rumprobieren...

Allerdings sollen Die Buttons auch erreichbar sein ohne zu scrollen.
Antworten