All basic features of Qt

This commit is contained in:
Sonaion
2019-11-20 12:17:14 +01:00
parent ff2cddfd3c
commit d275793da6
7 changed files with 82 additions and 4 deletions

View File

@@ -103,3 +103,26 @@ QLabel* LayerManager::getDisplayable(){
this->imgLabel->setPixmap(aMap);
return imgLabel;
}
void LayerManager::floodFillLayer(int r, int g, int b){
for(size_t i=0; i< static_cast<size_t>(this->getLayerCount()); i++){
if(MetaEbenen[i].a==255){
Ebenen[i]->floodFill(r,g,b);
this->UpdateLabel();
return;
}
}
}
void LayerManager::UpdateLabel(){
//Tranzparenz der Ebenen muss möglich sein
QPixmap aMap;
for(size_t i=0; i<static_cast<size_t>(this->getLayerCount()); i++){
if(MetaEbenen[i].a==255){
aMap = Ebenen[i]->getAsPixmap();
break;
}
}
this->imgLabel->setPixmap(aMap);
}

View File

@@ -4,6 +4,7 @@
#include<vector>
#include <QLabel>
#include <QWidget>
@@ -34,6 +35,9 @@ private:
//all the meta data parallel to Ebenen Container
std::vector<EbenenMetaDaten> MetaEbenen;
//updates the display
void UpdateLabel();
public:
LayerManager();
~LayerManager();
@@ -59,6 +63,9 @@ public:
//delets a layer at the given index
void DeleteLayer(int idx);
//fill active Layer
void floodFillLayer(int r, int g, int b);
//returns the output ready label
QLabel* getDisplayable();
};

View File

@@ -2,6 +2,8 @@
#include "ui_intelligui.h"
#include "LayerManager.h"
#include<QDebug>
IntelliGUI::IntelliGUI(QWidget *parent)
: QMainWindow(parent),
ui(new Ui::IntelliGUI){
@@ -21,13 +23,28 @@ IntelliGUI::IntelliGUI(QWidget *parent)
//setup all gui elements down here
this->EinKnopf = new QPushButton("Ein Knopf");
this->Red = new QLineEdit();
this->Blue = new QLineEdit();
this->Green = new QLineEdit();
//Manage signals and slots in here
QObject::connect(EinKnopf, SIGNAL(clicked()), this, SLOT(on_EinKnopf_clicked()));
//Merge all gui elements to Layout down here
this->Layout->addWidget(this->EinKnopf, 0,10);
this->Layout->addWidget(this->EbenenManager->getDisplayable(),1,1,10,10);
//this->Layout->addWidget(this->EbenenManager->getDisplayable(),0,0,10,10);
this->Layout->addWidget(this->Red, 1,10);
this->Layout->addWidget(this->Green, 2,10);
this->Layout->addWidget(this->Blue, 3,10);
this->Layout->addWidget(this->EbenenManager->getDisplayable(),0,0,10,10);
//set style here
this->setStyleSheet("background-color:rgb(60,60,60)");
this->EinKnopf->setStyleSheet("color:rgb(250,250,250)");
this->Red->setStyleSheet("color:rgb(250,250,250)");
this->Green->setStyleSheet("color:rgb(250,250,250)");
this->Blue->setStyleSheet("color:rgb(250,250,250)");
//Layout is set in here
this->setLayout(Layout);
}
@@ -39,6 +56,18 @@ IntelliGUI::~IntelliGUI(){
delete EbenenManager;
//delete all Gui elements down here
delete EinKnopf;
delete Red;
delete Blue;
delete Green;
}
void IntelliGUI::on_EinKnopf_clicked(){
int redCol = Red->text().toInt();
int greCol = Green->text().toInt();
int bluCol = Blue->text().toInt();
qDebug() << redCol << " " << greCol << " " << bluCol << '\n';
EbenenManager->floodFillLayer(redCol, greCol, bluCol);
}

View File

@@ -5,6 +5,7 @@
#include <QPushButton>
#include <LayerManager.h>
#include <QGridLayout>
#include <QLineEdit>
QT_BEGIN_NAMESPACE
namespace Ui { class IntelliGUI; }
@@ -22,6 +23,9 @@ class IntelliGUI : public QMainWindow
//Declare all Gui elements down here
QPushButton *EinKnopf;
QLineEdit *Red;
QLineEdit *Blue;
QLineEdit *Green;
private:
Ui::IntelliGUI *ui;
@@ -32,6 +36,7 @@ public:
//Delets everything in connection to one project
~IntelliGUI();
private slots:
public slots:
void on_EinKnopf_clicked();
};
#endif // INTELLIGUI_H

View File

@@ -22,3 +22,11 @@ QPixmap Layer::getAsPixmap(){
return QPixmap::fromImage(*(this->Canvas));
}
void Layer::floodFill(int r, int g, int b){
for(int i=0; i<width; i++){
for(int j=0; j<height; j++){
this->Canvas->setPixelColor(i,j,QColor(r,g,b,255));
}
}
}

View File

@@ -25,6 +25,9 @@ public:
//load an image to the canvas
void loadImage(const QString& fileName);
//flood fills canvas
void floodFill(int r, int g, int b);
//return the image as QPixmap
QPixmap getAsPixmap();
};

View File

@@ -1,3 +1,5 @@
#include<QDebug>
#include "intelligui.h"
#include <QApplication>
@@ -7,6 +9,7 @@
#include<QImage>
#include<QPixmap>
int main(int argc, char *argv[])
{
QApplication application(argc, argv);