beginning qt - nus computing - homecs3249/lecture/beginning qt.pdf · cs3249 (soc, nus) beginning...

Download Beginning Qt - NUS Computing - Homecs3249/lecture/beginning Qt.pdf · CS3249 (SoC, NUS) Beginning Qt 1 CS3249 (SoC, NUS)CS3249 (SoC, NUS) Beginning Qt 1 Beginning Qt Leow Wee Kheng

If you can't read please download the document

Upload: hoangdang

Post on 07-Feb-2018

239 views

Category:

Documents


2 download

TRANSCRIPT

  • CS3249 (SoC, NUS) Beginning Qt 1CS3249 (SoC, NUS)

    Beginning Qt 11CS3249 (SoC, NUS) Beginning Qt

    Beginning Qt

    Leow Wee KhengCS3249 User Interface DevelopmentDepartment of Computer Science, SoC, NUS

  • CS3249 (SoC, NUS) Beginning Qt 2CS3249 (SoC, NUS) Beginning Qt 2CS3249 (SoC, NUS)Beginning Qt 2Beginning Qt 2CS3249 (SoC, NUS)

    The easiest way to learn is

    by examples!

  • CS3249 (SoC, NUS) Beginning Qt 3CS3249 (SoC, NUS) 3Beginning Qt

    Hello, World!

    #include #include

    int main(int argv, char **args){ QApplication app(argv, args);

    QLabel label("Hello, World!\ Welcome to CS3249!"); // create label label.show();

    return app.exec(); // start running}

  • CS3249 (SoC, NUS) Beginning Qt 4CS3249 (SoC, NUS) Beginning Qt 4CS3249 (SoC, NUS)Beginning Qt 4Beginning Qt 4CS3249 (SoC, NUS)

    Widget = window gadget

    Widgets are hidden when they are created. Customise before showing them; avoid flicker.

    QApplication manages resources. app.exec() starts GUI running.

    windowtitle bar

    QLabelwidget

  • CS3249 (SoC, NUS) Beginning Qt 5CS3249 (SoC, NUS) 5Beginning Qt

    Window vs. Widget

    Window has window title bar.

    Widget doesn't have title bar.

    Widget without parent becomes window.

    window widget

  • CS3249 (SoC, NUS) Beginning Qt 6CS3249 (SoC, NUS) 6Beginning Qt

    Enter your age

    #include #include #include #include

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

    // Create main window. QWidget *window = new QWidget; window->setWindowTitle("Enter your age");

  • CS3249 (SoC, NUS) Beginning Qt 7CS3249 (SoC, NUS) Beginning Qt 7CS3249 (SoC, NUS)Beginning Qt 7Beginning Qt 7CS3249 (SoC, NUS)

    // Create spin box. QSpinBox *spinBox = new QSpinBox; spinBox->setRange(0, 130);

    // Create slider. QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 130); // Connect spin box to slider. QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); // Connect slider to spin box. QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));

    spinBox->setValue(35); // Initialise value.

  • CS3249 (SoC, NUS) Beginning Qt 8CS3249 (SoC, NUS) Beginning Qt 8CS3249 (SoC, NUS)Beginning Qt 8Beginning Qt 8CS3249 (SoC, NUS)

    // Create layout to put widgets in place. QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(spinBox); layout->addWidget(slider); // Put layout in main window. window->setLayout(layout); window->show(); return app.exec();}

  • CS3249 (SoC, NUS) Beginning Qt 9CS3249 (SoC, NUS) Beginning Qt 9CS3249 (SoC, NUS)Beginning Qt 9Beginning Qt 9CS3249 (SoC, NUS)

    Layout

    The parent of spinbox and slider is window, not layout. window's layout manager is layout.

    title bar

    window(QWidget)

    layout(QHBoxLayout)

    slider(QSlider)

    spinbox(QSpinBox)

  • CS3249 (SoC, NUS) Beginning Qt 10CS3249 (SoC, NUS) Beginning Qt 10CS3249 (SoC, NUS)Beginning Qt 10Beginning Qt 10CS3249 (SoC, NUS)

    Signals and Slots

    valueChanged(35)

    setValue(35)

    valueChanged(35)

    setValue(35)

    When created

    setValue(35)

    no change

  • CS3249 (SoC, NUS) Beginning Qt 11CS3249 (SoC, NUS) 11Beginning Qt

    Widgets

    Qt widgets can be categorised as Display Button Input Container Item view Dialog

  • CS3249 (SoC, NUS) Beginning Qt 12CS3249 (SoC, NUS) 12Beginning Qt

    Display Widgets

    QLabel QLCDNumber QProgressBar

    QLabel (image) QTextBrowser

  • CS3249 (SoC, NUS) Beginning Qt 13CS3249 (SoC, NUS) 13Beginning Qt

    Button Widgets

    QPushButton

    QToolButton

    QCheckBox

    QRadioButton

  • CS3249 (SoC, NUS) Beginning Qt 14CS3249 (SoC, NUS) 14Beginning Qt

    Input Widgets

    QLineEdit

    QDateEdit

    QTimeEdit

    QDateTimeEdit

    QSlider

    QScrollBar

    QSpinBox

    QDoubleSpinBox

  • CS3249 (SoC, NUS) Beginning Qt 15CS3249 (SoC, NUS) Beginning Qt 15CS3249 (SoC, NUS)Beginning Qt 15Beginning Qt 15CS3249 (SoC, NUS)

    QComboBox

    QFontComboBox

    QDial QTextEdit QCalendar

  • CS3249 (SoC, NUS) Beginning Qt 16CS3249 (SoC, NUS) 16Beginning Qt

    Container Widgets

    QGroupBoxQFrame

    QToolBox

    QTabWidget

  • CS3249 (SoC, NUS) Beginning Qt 17CS3249 (SoC, NUS) 17Beginning Qt

    Item View Widgets

    QListView

    QTreeView

    QTableView

  • CS3249 (SoC, NUS) Beginning Qt 19CS3249 (SoC, NUS) Beginning Qt 19CS3249 (SoC, NUS)Beginning Qt 19Beginning Qt 19CS3249 (SoC, NUS)

    QColorDialog QFontDialog

    QFileDialog QPrintDialog

  • CS3249 (SoC, NUS) Beginning Qt 20CS3249 (SoC, NUS) Beginning Qt 20CS3249 (SoC, NUS)Beginning Qt 20Beginning Qt 20CS3249 (SoC, NUS)

    QWizard

  • CS3249 (SoC, NUS) Beginning Qt 21CS3249 (SoC, NUS) 21Beginning Qt

    Widget Styles

    Qt simulates look and feel of supported platforms.

    Qt uses native window theme if present.

    Widget styles supported: Plastique: KDE (K Desktop Environment) Cleanlooks: GNOME GTK: GTK desktop environment Motif: X11 window system, old style CDE: slightly improved Motif style

    (Common Desktop Environment) Macintosh Windows, Windows XP, Windows Vista

  • CS3249 (SoC, NUS) Beginning Qt 22CS3249 (SoC, NUS) Beginning Qt 22CS3249 (SoC, NUS)Beginning Qt 22Beginning Qt 22CS3249 (SoC, NUS)

    Plastique Cleanlooks GTK

    Motif CDE Macintosh

    Windows Windows XP Windows Vista

  • CS3249 (SoC, NUS) Beginning Qt 23CS3249 (SoC, NUS) Beginning Qt 23CS3249 (SoC, NUS)Beginning Qt 23Beginning Qt 23CS3249 (SoC, NUS)

    Plastique Cleanlooks GTK

    Motif CDE Macintosh

    Windows Windows XP Windows Vista

    Sliders and Scroll Bars

  • CS3249 (SoC, NUS) Beginning Qt 24CS3249 (SoC, NUS) Beginning Qt 24CS3249 (SoC, NUS)Beginning Qt 24Beginning Qt 24CS3249 (SoC, NUS)

    Window Title Bars

    Ubuntu

    X11

    Windows

    Windows 7

    Macintosh

    Ambiance Radiance

  • CS3249 (SoC, NUS) Beginning Qt 25CS3249 (SoC, NUS) 25Beginning Qt

    Layout

    Organise widgets using layout.

    Types of layout: QBoxLayout, QHBoxLayout, QVBoxLayout QGridLayout QFormLayout QStackedLayout

  • CS3249 (SoC, NUS) Beginning Qt 26CS3249 (SoC, NUS) Beginning Qt 26CS3249 (SoC, NUS)Beginning Qt 26Beginning Qt 26CS3249 (SoC, NUS)

    QHBoxLayout QVBoxLayout

    QGridLayout QStackedLayout

    QFormLayout

  • CS3249 (SoC, NUS) Beginning Qt 27CS3249 (SoC, NUS) 27Beginning Qt

    Summary

    Widgets: building blocks of GUI.

    Layouts: organise layout of widgets.

    Signals and slots:communications between widgets and programs.

  • CS3249 (SoC, NUS) Beginning Qt 28CS3249 (SoC, NUS) 28Beginning Qt

    Further Reading

    Widget styles: [Blan2008] p. 9.

    Built-in widgets: [Blan2008] p. 3944.

  • CS3249 (SoC, NUS) Beginning Qt 29CS3249 (SoC, NUS) 29Beginning Qt

    Reference

    J. Blanchette and M. Summerfield, C++ GUI Programming with Qt 4, 2nd ed., Prentice Hall, 2008.