The Central Widget
The central area of a QMainWindow can be occupied by any kind of widget. Here's an overview of the possibilities:
- Use a standard Qt widget.
A standard widget like QTable or QTextEdit can be used as a central widget. In this case, the application's functionality, such as loading and saving files, must be implemented elsewhere (for example, in a QMainWindow subclass).
- Use a custom widget.
Specialized applications often need to show data in a custom widget. For example, an icon editor program would have an IconEditor widget as its central widget. Chapter 5 explains how to write custom widgets in Qt.
- Use a plain QWidget with a layout manager.
Sometimes the application's central area is occupied by many widgets. This can be done by using a QWidget as the parent of all the other widgets, and using layout managers to size and position the child widgets.
- Use a splitter.
Another way of using multiple widgets together is to use a QSplitter. The QSplitter arranges its child widgets side by side like a QHBox, or in a column like a QVBox, with splitter handles to give some sizing control to the user. Splitters can contain all kinds of widgets, including other splitters.
- Use an MDI workspace.
If the application uses MDI, the central area is occupied by a QWorkspace widget, and each of the MDI windows is a child of that widget.
Layouts, splitters, and MDI workspaces can be used in combination with standard Qt widgets or with custom widgets. Chapter 6 covers these classes in depth.
For the Spreadsheet application, a QTable subclass is used as the central widget. The QTable class already provides most of the spreadsheet capability we need, but it doesn't understand spreadsheet formulas like "=A1+A2+A3", and it doesn't support clipboard operations. We will implement this missing functionality in the Spreadsheet class, which inherits from QTable.