728x90

키오스크에는 여러 메뉴가 존재합니다. 이 메뉴를 보여주기 위해서는 메뉴 사진, 이름, 가격을 보여줘야 합니다.

 

메뉴에 필요한 위젯을 하나로 묶어서 사용하기 위해 ui파일을 따로 만들어 사용하려고 합니다.

 

QTCreator에서 new FIle > Files and Classes > Qt > Qt Designer Form Class 를 선택합니다.

Form Templated에서 Widget을 선택합니다.

mymenu.ui에 이미지, 이름, 가격을 넣을 QLabel 3개를 넣어주었습니다.

저장 후 메인 Ui로 넘어와 Widget을 하나 끌어다 놓아줍니다. 

Widget에 우클릭을 해 Promoted to.. 를 눌러 아래 창을 띄워줍니다.

 

Promoted class name에 만든 ui 이름을 적어주고 Add를 눌러준 다음 Promote를 클릭합니다.

이제 Widget을 두개를 놓고 Debug 후 실행을 합니다.

mymenu가 제대로 출력이 되는 것을 확인할 수 있습니다.

이제 Mainwindow.cpp에서 MyMenu의 label을 수정하는 방법입니다.

 

Mainwindows.cpp에서 widget안에 label에 직접 접근이 안되니 MyMenu에 set 함수를 추가합니다.

Mymenu.h

#ifndef MYMENU_H
#define MYMENU_H

#include <QWidget>

namespace Ui {
class MyMenu;
}

class MyMenu : public QWidget
{
    Q_OBJECT

public:
    explicit MyMenu(QWidget *parent = nullptr);
    ~MyMenu();
    void setImage(QPixmap pixmap);
    void setName(QString name);
    void setPrice(QString price);

private:
    Ui::MyMenu *ui;
};

#endif // MYMENU_H

Mymenu.cpp

#include "mymenu.h"
#include "ui_mymenu.h"

MyMenu::MyMenu(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyMenu)
{
    ui->setupUi(this);
}

MyMenu::~MyMenu()
{
    delete ui;
}

void MyMenu::setImage(QPixmap pixmap)
{
    ui->label->setPixmap(pixmap.scaled(128,128,Qt::KeepAspectRatio));
}
void MyMenu::setName(QString name)
{
    ui->label_2->setText(name);
}
void MyMenu::setPrice(QString price)
{
    ui->label_3->setText(price);
}

다음으로 MainWindow.h입니다.

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    
private:
    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QPixmap burgerpicture;
    burgerpicture.load("/home/pi/kiosk/image/빅맥.png");
    ui->widget->setImage(burgerpicture);
    ui->widget->setName("빅맥");
    ui->widget->setPrice("5000");

}

MainWindow::~MainWindow()
{
    delete ui;
}

마지막으로 실행 결과입니다.

728x90

'Programming > Qt' 카테고리의 다른 글

Qt Popup window 사용하기  (0) 2020.05.07
QPushButton 이미지 넣기  (2) 2020.04.14
Qt 클릭 이벤트 만들기  (0) 2020.04.10
Qt 데이터베이스(maria db) 연동해서 사용하기  (0) 2020.03.13
Qt Tcp 소켓통신하기(서버)  (0) 2019.11.20

+ Recent posts