start working on gui

This commit is contained in:
Jeff Wang
2019-04-03 00:07:15 -04:00
parent 5cea4807f7
commit 8f39958679
10 changed files with 244 additions and 2 deletions

29
qt_gui/CMakeLists.txt Normal file
View File

@ -0,0 +1,29 @@
include_directories(${Qt5Widgets_INCLUDE_DIRS} ${QtQml_INCLUDE_DIRS})
add_definitions(${Qt5Widgets_DEFINITIONS} ${QtQml_DEFINITIONS} ${${Qt5Quick_DEFINITIONS}})
qt5_add_resources(QT_RESOURCES main.qrc)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(PROJECT "RPN_Calculator")
project(${PROJECT})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11 -fstrict-aliasing -pedantic ")
if(NOT DEFINED HEADERS)
file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}*.h)
endif()
# if(NOT DEFINED SOURCES)
# file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}*.cpp)
# endif()
source_group("Header Files" FILES ${HEADERS})
# source_group("Source Files" FILES ${SOURCES})
set(SOURCES main.cpp calculator.cpp)
add_executable(${PROJECT} ${HEADERS} ${SOURCES} ${QT_RESOURCES})
target_link_libraries(${PROJECT}
Qt5::Widgets
Qt5::Qml
Qt5::Quick
calc
)

12
qt_gui/calculator.cpp Normal file
View File

@ -0,0 +1,12 @@
#include <QDebug>
#include "calculator.h"
Calculator::Calculator(QObject *parent) :
QObject(parent)
{
}
void Calculator::buttonClicked(const QString& in) {
qDebug() << in;
}

20
qt_gui/calculator.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef QTGUI_CALCULATOR_H
#define QTGUI_CALCULATOR_H
#include <QObject>
class Calculator : public QObject
{
Q_OBJECT
public:
explicit Calculator(QObject *parent = 0);
public slots:
void buttonClicked(const QString& in);
};
#endif //include guard

16
qt_gui/main.cpp Normal file
View File

@ -0,0 +1,16 @@
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "calculator.h"
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
Calculator calculator;
engine.rootContext()->setContextProperty("_calculator", &calculator);
return app.exec();
}

55
qt_gui/main.qml Normal file
View File

@ -0,0 +1,55 @@
import QtQuick 2.0
import QtQuick.Controls 1.0
import Qt3D.Input 2.0
ApplicationWindow
{
visible: true
width: 1000
height: 1000
title: qsTr("RPN Calculator")
//calculator
Column {
id: base;
spacing: 5;
width: 4 * (100 + 5)
height: 5 * (100 + 5) + 200
//LCD
Rectangle {
id: lcd;
color: "gray"
width: 4 * (100 + 5) - 5
height: 200
}
//Keyboard
Repeater {
model: 5;
//row
delegate: Row {
id: key_row;
spacing: 5;
//keys within row
Repeater {
model: 4;
delegate: Rectangle {
id: key_key;
width: 100;
height: 100;
color: "blue"
border { width: 1; color: "black" }
Text {
text: index
anchors.centerIn: parent
}
MouseHandler {
onClicked: _calculator.buttonClicked(index)
}
}
}
}
}
}
}

5
qt_gui/main.qrc Normal file
View File

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>