今回は例として、enumの値を代入します。

設定の例

enum class ActionType {
    Open,
    Save,
    Close
};

QPushButton* btn = new QPushButton("Open");

// enum → int にして保存
btn->setProperty("action", static_cast<int>(ActionType::Open));

取得の例

void MainWindow::onButtonClicked()
{
    QPushButton* btn = qobject_cast<QPushButton*>(sender());

    if (!btn) return;

    ActionType action =
        static_cast<ActionType>(btn->property("action").toInt());

    switch (action) {
    case ActionType::Open:
        qDebug() << "Open";
        break;
    case ActionType::Save:
        qDebug() << "Save";
        break;
    case ActionType::Close:
        qDebug() << "Close";
        break;
    }
}

シグナルの接続

connect(btn, &QPushButton::clicked, this, &MainWindow::onButtonClicked);