A Qt-based application for designing house layouts with walls and furniture.
- Draw horizontal and vertical walls
- Add furniture (sofa, chair, table) to your layout
- Move furniture via drag-and-drop
- Rotate furniture
- Select, copy, cut, and paste
- Undo/redo support
- Save and load projects
- Qt 6.8.1 or later
- CMake 3.16 or later
- C++ compiler with C++17 support
- Clone or download the project
- Create a build directory:
mkdir build
cd build- Configure the project with CMake:
cmake ..- Build the project:
cmake --build .- Run the application:
./HousePlannerAlternatively, you can open the project in QtCreator by opening the CMakeLists.txt file and use the integrated build and run functionality.
You can create projects in three sizes:
- Small (300x300)
- Medium (600x600)
- Large (800x600)
Select File > New and then the desired size.
- Click the "Wall" tool in the toolbar
- Click and drag to draw a wall
- Hold the Shift key while drawing to snap to horizontal or vertical walls
- Click on the desired furniture tool (Sofa, Chair, or Table)
- Click in the design area to place the furniture
- Click the "Select" tool
- Click on a furniture or a wall to select it
- Drag the selected furniture to move it
- Hold Ctrl while clicking to select multiple items
- Select a single furniture item
- Press 'R' to rotate clockwise, or Shift+R to rotate counter-clockwise
- Alternatively, use the "Rotate" tool
- Use standard keyboard shortcuts (Ctrl+C, Ctrl+X, Ctrl+V)
- You can also use the Edit menu or toolbar buttons
- Save your project using File > Save or the toolbar button
- Open existing projects with File > Open
- Ctrl+S: Save
- Ctrl+O: Open
- Ctrl+Z: Undo
- Ctrl+Y: Redo
- Ctrl+X: Cut
- Ctrl+C: Copy
- Ctrl+V: Paste
- Delete: Delete selected furniture
- Ctrl+A: Select all
- R: Rotate clockwise
- Shift+R: Rotate anti-clockwise
- Esc: Clear selection
The application is built using the Model-View-Controller pattern with a command pattern for undo/redo functionality.
Key classes:
MainWindow: The main application windowDesignArea: The canvas where the layout is drawnWall: Represents walls in the layoutFurniture: Base class for furniture itemsCommand: Base class for the command patternProject: Handles saving and loading projects