Got Qt? 10 things to know before you code


Published on

Qt is a powerful framework that allows you to bring amazing products to life – on any device. Watch the full video here:

Before starting any software development project, there are some things you should know – before you code. In this webinar, we will explore the use of the right people and the right tools first and then we will cover the top 10 things you need to know before using Qt. Join us and learn the best way to future-proof your sophisticated and modern software projects.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Got Qt? 10 things to know before you code

  1. 1. Got Qt? 10 Things to Know Before You Code Justin Noel Senior Consulting Engineer ICS, Inc.
  2. 2. The Right Tools • Qt is huge! • Study the API and docs for hidden treasure: • QML Styling: QQmlFileSelector • Web Services: QNetworkAccessManager • There are other toolkits to help • Boost, Vtk, FFMpeg, libusb • Don’t be afraid to look around for solutions • Complex video rendering? • Maybe QtMultimedia fits. Maybe not.
  3. 3. The Right People • Staff the project up early. • Don’t hold your “big push” for the end • Consult with experts (internally or externally) • For each of your “hard parts” • Also for each toolkit • Get training! • Avoid re-inventing the wheel! • Get advice early!
  4. 4. User Experience (UX) • User Experience is vital to a project’s success • Start early with a Human Centered Design • Good UX should optimize and simplify the user’s workflow • Especially true for embedded devices and mobile
  5. 5. Iterative UX • Engineering must be a stake holder in all UX activity • Make sure UX maps to realities of HW and SW stack • Rework UX? Or does the stack need changing? • User Experience process needs to be iterative just like the software process • UX needs to start the project a month ahead of engineering • You will catch them. Also you will need UX support.
  6. 6. Be Agile • Agile is more than just daily standups and design on demand • Although both of these help quite a bit • The next 5 points are all agile related • Keep standup very short. 3 questions: • What did I do yesterday? • What will I do today? • Does anything prevent work from continuing?
  7. 7. Test Early • Earlier you can test code the more traceable it is. • What went wrong? Why? • Can we stop it from happening again? • Is our pattern wrong? • QTest is good unit testing framework • Has Qt specific things: Test events and signals • GTest and GMock are much more powerful • Qt compatible. Can use features of QTest
  8. 8. Be Testable • Structure code and design to be testable • Build as libraries, DI, Signals/Slot Interfaces Backend.dll App.exe (only main.cpp) Ui.dll BackendTests.exe UiTests.exe C++ Test Fixtures QML Test Fixtures
  9. 9. Layered Design • Qt and a Layered Design can help Testability and Demo-ability Visualization Layer (QML) Presentation Layer (QObjects) Data Layer (Local Data Storage) Communications Layer (TCP) Calls Down Signals Up
  10. 10. QML as Visualization Only • The best QML advice is Keep It Simple! • QML is the best UI visualization toolkit • Let it do what it does best: Draw and Animate. • Let C++ classes take care of the rest • Business logic, Storage, etc • Even UI flow in some cases • See the Qt State Machine talks!
  11. 11. Always Be Delivering • Deliver from Day 1 • Spend Day 0 setting up a Continuous Integration Server • Create installer scripts for what little code you have • Always be ready to distribute or demo the code. • Being able to run “off device” is quite helpful for getting stake holder feedback.
  12. 12. Always Be Reviewing • Code review is essential • Is the code correct? • Does it follow project patterns and style? • Cross-pollination of developer knowledge • Code review servers are best • ICS suggests Gerrit • Pre-commit checks / review • Same system that the Qt Project uses
  13. 13. Don’t Be Too Agile • Know your schedule. • It’s easy to put off creating stories until immediately before the sprint starts. • Create rough estimates for large tasks as soon as they are known • Don’t need to be super accurate. Iterate over time. • Points or time • Having these will provide a rough estimate for completion • Also as new requirements arise you can predict schedule impact
  14. 14. Checklist Big Items • You should know what to expect for “the hard parts” • External Interfaces • Fancy Renderings • Performance Requirements • Create a checklist and assign research tasks • Find “Unknown Unknowns” • These can kill your schedule if they arise late
  15. 15. Internationalize Early • Internationalize from Day 1 • Wrap user visible string in tr / translate • Use QLocale for all numbers and dates • Create a dummy translation file for testing • A script can update a .ts with fake translations • Ceasar Cipher (ROT-13) works well • Verify all the strings / dates / numbers change • As you deliver each screen!
  16. 16. Thank You! Justin Noel Senior Consulting Engineer ICS, Inc.