From c25996a925885e3ab65c3b997f3e520670c2d06e Mon Sep 17 00:00:00 2001 From: lukas Date: Sat, 9 May 2020 23:08:23 +0200 Subject: [PATCH] first qt gui steps --- CMakeLists.txt | 29 ++++++++++++ src/gui/MainWindow.cpp | 38 +++++++++++++++ src/gui/MainWindow.h | 31 +++++++++++++ src/gui/mainwindow.ui | 103 +++++++++++++++++++++++++++++++++++++++++ src/maingui.cpp | 17 +++++++ 5 files changed, 218 insertions(+) create mode 100644 src/gui/MainWindow.cpp create mode 100644 src/gui/MainWindow.h create mode 100644 src/gui/mainwindow.ui create mode 100644 src/maingui.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 70dc0b8..ff32a1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ SET(LIB_METHOD STATIC) #SHARED / STATIC option(BUILD_DOC "Build documentation" ON) # additional dependency for Doxygen option(PACKAGING "Allow Packaging to , or " ON) # additional dependencies for RPMbuild,dpkg or NSIS option(TESTS "Build Tests" ON) # additional dependencies for GTEST - to build tests +option(GUI "Build GUI elements" ON) # additional dependencies to QT libraries needed set(WinBuild false) # helper variables @@ -173,6 +174,34 @@ add_executable(iprefresher src/main.cpp) # LINK generated LIBS # target_link_libraries(iprefresher dynuiprefresher api ${CURL_LIBRARIES} ${LIBCONFIG++_LIBRARIES}) +if (${GUI}) + set(CMAKE_AUTOMOC ON) + set(CMAKE_INCLUDE_CURRENT_DIR ON) + + find_package(Qt5Widgets REQUIRED) + find_package(Qt5PrintSupport REQUIRED) + find_package(Qt5Sql REQUIRED) + set(QT5_LIBRARIES Qt5::Widgets Qt5::PrintSupport Qt5::Sql) + + set(UI_SOURCES + src/gui/mainwindow.ui + ) + + # + # Generate necessary headers from .ui files. (qmake lets `uic` do this job.) + # hint from [Cross-platform Qt5 project using cmake](http://stackoverflow.com/questions/21174586/cross-platform-qt5-project-using-cmake) + # + qt5_wrap_ui(UI_GENERATED_HEADERS ${UI_SOURCES}) + + add_executable(iprefresher-gui + src/maingui.cpp + src/gui/MainWindow.cpp + src/gui/MainWindow.h ${UI_GENERATED_HEADERS}) + + # LINK generated LIBS # + target_link_libraries(iprefresher-gui dynuiprefresher api ${CURL_LIBRARIES} ${LIBCONFIG++_LIBRARIES} ${QT5_LIBRARIES}) +endif () + # setting install targets IF (NOT ${WinBuild}) # INSTALL to Linux SYSTEM # diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp new file mode 100644 index 0000000..6c1afca --- /dev/null +++ b/src/gui/MainWindow.cpp @@ -0,0 +1,38 @@ +// +// Created by lukas on 09.05.20. +// + +#include +#include "MainWindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), ui(new Ui::MainWindow) { + + ui->setupUi(this); + ui->textLog-> + +// ui->labelCurrentIP->setText("currently is nothing to do"); +// ui->labelConfig->setText("blabliblub"); +// ui->textfieldname->setText("hangover"); + + connect(ui->buttonCheckConfig, SIGNAL(clicked()), this, SLOT(checkConfigBtn())); + connect(ui->buttonRefreshIP, SIGNAL(clicked()), this, SLOT(refreshIPBtn())); + + connect(this, SIGNAL(appendLogField(QString)), ui->textLog, SLOT(appendPlainText(QString))); +// connect(this, SIGNAL(setProgressBarValue(int)), ui->progressmanual, SLOT(setValue(int))); +} + +MainWindow::~MainWindow() { + delete ui; +} + +void MainWindow::checkConfigBtn() { + std::cout << "btn clicked!" << std::endl; + + appendLogField("btn clicked! \n"); +} + +void MainWindow::refreshIPBtn() { + +} \ No newline at end of file diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h new file mode 100644 index 0000000..c954b49 --- /dev/null +++ b/src/gui/MainWindow.h @@ -0,0 +1,31 @@ +// +// Created by lukas on 09.05.20. +// + +#pragma once + + +#include + +namespace Ui { + class MainWindow; +} + +class MainWindow : public QMainWindow{ +Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private: + Ui::MainWindow *ui; +private slots: +// void startdownloadBtn(); +void checkConfigBtn(); +void refreshIPBtn(); +signals: + void appendLogField(QString); +// void setInfoLabelText(QString); +// void setProgressBarValue(int); +}; \ No newline at end of file diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui new file mode 100644 index 0000000..2857309 --- /dev/null +++ b/src/gui/mainwindow.ui @@ -0,0 +1,103 @@ + + + MainWindow + + + + 0 + 0 + 823 + 618 + + + + MainWindow + + + + + + 290 + 300 + 91 + 33 + + + + Refresh IP + + + + + + 40 + 60 + 161 + 17 + + + + Your current global IP: + + + + + true + + + + 40 + 410 + 691 + 191 + + + + IBeamCursor + + + + + + 40 + 380 + 64 + 17 + + + + Log: + + + + + + 270 + 140 + 91 + 33 + + + + Check Config + + + + + + 270 + 180 + 141 + 17 + + + + Config is: undefined + + + + + + + + diff --git a/src/maingui.cpp b/src/maingui.cpp new file mode 100644 index 0000000..3e10667 --- /dev/null +++ b/src/maingui.cpp @@ -0,0 +1,17 @@ +// +// Created by lukas on 09.05.20. +// + +#include +#include +#include "gui/MainWindow.h" + +int main(int argc, char *argv[]) { + std::cout << "gui here!" << std::endl; + + QApplication a(argc, argv); + MainWindow w; + w.show(); + + return QApplication::exec(); +} \ No newline at end of file