Seite 1 von 1
QScrollArea geht nicht?!
Verfasst: 5. Dezember 2010 17:30
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
Verfasst: 5. Dezember 2010 18:28
von Christian81
Der Dialog hat kein Layout würde ich sagen.
Verfasst: 5. Dezember 2010 18:48
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"?
Verfasst: 5. Dezember 2010 18:51
von Christian81
Indem man dem Dialog ein Layout gibt ... ohne ui weiss ich nicht was genau Du gemacht hast.
Verfasst: 5. Dezember 2010 18:57
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
Verfasst: 5. Dezember 2010 18:59
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
Verfasst: 5. Dezember 2010 19:04
von cbodenstein
Ok danke ich werds ma ein wenig rumprobieren...
Allerdings sollen Die Buttons auch erreichbar sein ohne zu scrollen.