Small fixes

This commit is contained in:
Sigismund Dijkstra 2025-07-21 00:20:08 -05:00
parent 0196d4ab36
commit ec4da11bb8
7 changed files with 291 additions and 113 deletions

24
.gitattributes vendored Normal file
View File

@ -0,0 +1,24 @@
# Set default behavior to automatically normalize line endings
* text=auto
# C++ source files
*.cpp text diff=cpp
*.h text diff=cpp
# CMake files
CMakeLists.txt text
*.cmake text
# QMake files
*.pro text
# Bash scripts
*.sh text eol=lf
# Documentation
*.md text diff=markdown
# Binary files
*.png binary
*.jpg binary
*.ico binary

31
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Build Qt Calculator
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Qt
run: |
sudo apt-get update
sudo apt-get install -y qtbase5-dev qt5-qmake cmake
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build
- name: Build
run: cmake --build ${{github.workspace}}/build
- name: Test
working-directory: ${{github.workspace}}/build
run: |
echo "Running built application to verify it works"
# Add tests if you implement them later

View File

@ -8,9 +8,26 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g")
endif()
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
# Установить пути поиска для Qt5
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/lib/qt5" "/usr/lib/x86_64-linux-gnu/qt5" "/usr/lib/cmake/Qt5")
# Альтернативный способ поиска Qt5
if(NOT Qt5_DIR)
set(Qt5_DIR "/usr/lib/cmake/Qt5")
endif()
# Настройка Qt5 и пути модулей
find_package(Qt5 COMPONENTS Core Widgets QUIET)
# Проверка наличия Qt5
if(NOT Qt5_FOUND)
message(FATAL_ERROR "Qt5 не найден. Установите пакеты Qt5: sudo apt install qtbase5-dev qt5-qmake")
endif()
# Включение автоматической генерации MOC-файлов для Qt
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
add_executable(Calculator main.cpp
Calculator.cpp

View File

@ -83,8 +83,8 @@
void Calculator::digitClicked()
{
const auto *button = qobject_cast<QPushButton *>(sender()); // const auto*
const QString digit = button -> text(); // const
const auto *button = qobject_cast<QPushButton *>(sender());
const QString digit = button->text();
if (waitingForOperand) {
display->clear();

View File

@ -3,18 +3,86 @@ # Qt Calculator
A simple calculator application built with Qt5 and C++20.
## Features
- Basic arithmetic operations (+, -, *, /)
- Clear functionality
- Error handling for division by zero
- Modern C++ practices (Rule of Five)
- Modern C++ practices (Rule of Five implementation)
## Build Requirements
- Qt5 (Core, Widgets)
- CMake 3.16+
## Requirements
To compile and run this project, you need:
- CMake 3.16 or higher
- Qt5 (Core and Widgets)
- C++20 compatible compiler
## Building
## Installing Dependencies
### Ubuntu/Debian:
```bash
# Full development environment
sudo apt install qtcreator qtbase5-dev qt5-qmake qtbase5-dev-tools cmake
# Minimal required packages
sudo apt install qtbase5-dev qt5-qmake cmake
```
### Verifying Qt5 Installation
Check if Qt5 packages are installed and locate them:
```bash
dpkg -l | grep qt5
find /usr -name "Qt5Config.cmake"
```
If Qt5Config.cmake is not found, install the necessary packages:
```bash
sudo apt install qtbase5-dev
```
### Fedora:
```bash
sudo dnf install qt5-qtbase-devel qt5-qttools-devel qt-creator cmake
```
### Arch Linux:
```bash
sudo pacman -S qt5-base qt5-tools qtcreator cmake
```
## Building the Project
### Using CMake (recommended)
```bash
mkdir build && cd build
cmake ..
make
```
### Using QMake (alternative)
```bash
qmake qt-project.pro
make
```
## Running the Application
```bash
./Calculator
```
## Troubleshooting Qt5 Find Issues
If CMake cannot find Qt5, you can specify the Qt5 path manually:
```bash
cmake -DQt5_DIR=/path/to/qt5/lib/cmake/Qt5 ..
```

21
build.sh Normal file
View File

@ -0,0 +1,21 @@
#!/bin/bash
# Check for Qt5 installation
if ! dpkg -l | grep -q qtbase5-dev; then
echo "Qt5 is not installed. Installing required packages..."
sudo apt install -y qtbase5-dev qt5-qmake cmake
fi
# Create build directory
mkdir -p build
cd build
# Configure CMake with Qt5 paths
cmake .. \
-DQt5_DIR=/usr/lib/cmake/Qt5 \
-DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu/cmake
# Build the project
make
echo "Build completed. Run the calculator with: ./build/Calculator"

17
qt-project.pro Normal file
View File

@ -0,0 +1,17 @@
# Alternative project file for Qt Creator and qmake
QT += core widgets
CONFIG += c++20
TARGET = Calculator
TEMPLATE = app
SOURCES += main.cpp \
Calculator.cpp
HEADERS += Calculator.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target