beginning qt - nus computingcs3249/lecture/beginning qt.pdf · cs3249 (soc, nus) beginning qt 21...
Post on 22-Oct-2020
10 Views
Preview:
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. 39–44.
-
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.
top related