[C++] 13 Qt5 GUIアプリ作成 QtWidgets

[M1 Mac, Big Sur 11.6.5]

GUI画面が出来上がりました。基本的にはPyQt6版のコードをコピペしてメソッドのピリオドを->に書き換えただけです。オブジェクト作成の際にnewを付けたり、行の最後にセミコロンを入れるのを忘れがちでした。

次はボタン動作ですが、Qtではシグナル/スロットという仕組みになっています。ざっと説明を読んだものの今ひとつピンとこないです。

#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QRadioButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
#include <QMainWindow>

int main(int argc, char *argv[]){
    QApplication app(argc, argv);

    QMainWindow* mainWin = new QMainWindow();
    mainWin->setGeometry(100,100,360,220);
    mainWin->setWindowTitle("IMAGE INSPECTOR");
    mainWin->setStyleSheet("background: '#708090';");

    QLabel* file = new QLabel(mainWin);
    file->setText("File");
    file->setGeometry(15,15,35,16);
    file->setStyleSheet("foreground: '#FFFAFA';font-size:12px;");

    QLineEdit* input= new QLineEdit(mainWin);
    input->setGeometry(50,10,220,25);
    
    QPushButton* execution = new QPushButton(mainWin);
    execution->setText("実行");
    execution->setGeometry(290,10,50,30);
    execution->setStyleSheet("foreground: '#FFFAFA';font-size:12px;");
    QPushButton::connect(execution, SIGNAL( clicked() ),&app, SLOT(quit()) );

    QPushButton* clear = new QPushButton(mainWin);
    clear->setText("クリア");
    clear->setGeometry(290,50,50,30);
    clear->setStyleSheet("foreground: '#FFFAFA';font-size:12px;");

    QButtonGroup* rbtns = new QButtonGroup(mainWin);
    QRadioButton* inspect = new QRadioButton(mainWin);
    inspect->setText("Inspect");
    inspect->setGeometry(50,40,90,20);
    inspect->setChecked(true);
    rbtns->addButton(inspect);
    
    QRadioButton* resize_img = new QRadioButton(mainWin);
    resize_img->setText("Resize");
    resize_img->setGeometry(50,65,90,20);
    rbtns->addButton(resize_img);

    QLabel* width_label = new QLabel(mainWin);
    width_label->setText("W");
    width_label->setGeometry(135,70,15,10);
    width_label->setStyleSheet("font-size:10px;");
    
    QLineEdit* width= new QLineEdit(mainWin);
    width->setGeometry(155,65,45,20);
    
    QLabel* height_label = new QLabel(mainWin);
    height_label->setText("H");
    height_label->setGeometry(205,70,15,10);
    height_label->setStyleSheet("font-size:10px;");
        
    QLineEdit* height= new QLineEdit(mainWin);
    height->setGeometry(220,65,45,20);
        
    QRadioButton* icns = new QRadioButton(mainWin);
    icns->setText("icns作成");
    icns->setGeometry(50,90,90,20);
    icns->setToolTip("PNG file[2048*2048,72px] required");
    rbtns->addButton(icns);
    
    QTextEdit* output = new QTextEdit(mainWin);
    output->setGeometry(50,115,240,100);
    
    mainWin->show();
    return app.exec();
}