Es gibt Vielzahl von Qt Komponenten. Komponenten können gemeinsam in das Widget gepackt werden:
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QLabel> #include <QLineEdit> class MyWidget : public QWidget { public: MyWidget(void); }; MyWidget::MyWidget(void) { QLabel* qlab = new QLabel(this); // Label qlab->setText( "first line\nsecond line" ); qlab->setGeometry(20,20,100,30); QLineEdit* ledit = new QLineEdit(this); // Text-Feld ledit->setText( "One editable line ..." ); ledit->setGeometry(120,20,200,30); QPushButton *qpb = new QPushButton("Hello world!",this); // Knopf qpb->setGeometry(320,20,400,30); } // main ....
// 3 Knoepfe mit einem Layoutmanager // 3 Knoepfe mit einem Layoutmanager #include <QApplication> #include <QPushButton> #include <QWidget> #include <QLayout> class MyWidget : public QWidget { public: MyWidget(); }; MyWidget::MyWidget() { // Knoepfe erzeugen QPushButton* b1 = new QPushButton("Button 1", this); b1->setMinimumSize(b1->sizeHint()); // minimal Groesse festlegen QPushButton* b2 = new QPushButton("Button 2", this); b2->setMinimumSize(b2->sizeHint()); QPushButton* b3 = new QPushButton("Button 3", this); b3->setMinimumSize(b3->sizeHint()); // Statt QHBoxLayout könnte natürlich auch ein // QVBoxLayout für vertikales Layout erzeugt werden. QHBoxLayout* layout = new QHBoxLayout(this);// Layoutmanager für horizontales Layout layout->addWidget(b1); // Knoepfe hinzufuegen. layout->addWidget(b2); layout->addWidget(b3); layout->activate(); // Layoutmanager aktivieren } //....
QTextEdit ergibt Text-Editor inclusive automatischen Scrollbars.
#include <QApplication> #include <QWidget> #include <QTextEdit> #include <QResizeEvent> class MyWidget : public QWidget { private: QTextEdit* qtxt; public: MyWidget(void); }; MyWidget::MyWidget(void) { qtxt = new QTextEdit(this); // TextArea qtxt->setText( " first line\n second line\n more lines..." ); qtxt->setGeometry(1,1,280,280); } // wird aufgerufen, wenn die Groesse des Fensters veraendert wird void MyWidget::resizeEvent( QResizeEvent* event ) { qtxt->resize( event->size() ); // neue Groesse } //....
Painter - Fenster zum Zeichnen
#include <QApplication> #include <QPainter> #include <QWidget> class QPaintEvent; //forward declaration class MyWidget : public QWidget { public: MyWidget(); protected: virtual void paintEvent(QPaintEvent*); }; MyWidget::MyWidget() { setBackgroundRole(QPalette::Base); setAutoFillBackground(true); } void MyWidget::paintEvent(QPaintEvent *) { QBrush b1( Qt::blue ); QBrush b2( Qt::green, Qt::Dense6Pattern ); // green 12% fill QBrush b3( Qt::NoBrush ); // void brush QBrush b4( Qt::CrossPattern ); // black cross pattern QPainter *paint = new QPainter(); paint->begin(this); paint->setPen( Qt::red ); paint->setBrush( b1 ); paint->drawRect( 10, 10, 200, 100 ); paint->setBrush( b2 ); paint->drawRoundRect( 10, 150, 200, 100, 20, 20 ); paint->setBrush( b3 ); paint->drawEllipse( 250, 10, 200, 100 ); paint->setBrush( b4 ); paint->drawPie( 250, 150, 200, 100, 45*16, 90*16 );// paint->translate(20.0,40.0); paint->end(); } int main(int argc, char **argv) { QApplication app(argc,argv); MyWidget *wid = new MyWidget(); wid->show(); return app.exec(); }
QPainter als Widget für grafische Elemente:
Es gibt noch viele weiter nützliche Komponenten: QSlider, QFileDialog, QDateTime, QTable, QMenu, QMenuBar, ...