{"id":2456,"date":"2025-10-16T11:38:34","date_gmt":"2025-10-16T02:38:34","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=2456"},"modified":"2025-10-18T11:03:53","modified_gmt":"2025-10-18T02:03:53","slug":"qtexample8-widget-new-window-2","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2025\/10\/16\/qtexample8-widget-new-window-2\/","title":{"rendered":"[QT]example8-Widget-New Window\u00a0(2)"},"content":{"rendered":"\n<p>\ud83d\udc49 \ubc84\ud2bc \ud074\ub9ad\uc2dc \ub2e4\uc774\uc5bc\ub85c\uadf8 \ucc3d\uacfc \uc0c8\ub85c\uc6b4 \ucc3d\uc744 \uc624\ud508\ud569\ub2c8\ub2e4.<br>When you click the button, a dialog window and a new window open.<\/p>\n\n\n\n<p>\ud83d\udc49 \uc0c8\ub85c\uc6b4 \ucc3d\uc5d0\uc11c \ud14d\uc2a4\ud2b8 \uc785\ub825\ud558\uace0 \ubc84\ud2bc \ud074\ub9ad\uc2dc mainwindow\uc758 \ub77c\ubca8\uc5d0 \ud14d\uc2a4\ud2b8\uac00 \ucd9c\ub825\ub429\ub2c8\ub2e4.<br>Enter text in a new window and click the button to display the text in the label of the mainwindow.<\/p>\n\n\n\n<p>\ud83d\udc49 \uc0c8\ub85c\uc6b4\ucc3d\uacfc \uc774\uc804 \ucc3d \uc0ac\uc774\uc758 \ubcc0\uc218 \uc804\ub2ec\uc740 \uc2dc\uadf8\ub110\uacfc \uc2ac\ub86f\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br>Passing variables between new and old windows uses signals and slots.<\/p>\n\n\n\n<p><strong>1.\ud074\ub798\uc2a4 \ubc0f \ud3fc \ucd94\uac00 \/ Add classes and forms<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"410\" height=\"567\" data-id=\"2462\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-3.png\" alt=\"\" class=\"wp-image-2462\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-3.png 410w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-3-217x300.png 217w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"562\" data-id=\"2463\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-4.png\" alt=\"\" class=\"wp-image-2463\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-4.png 527w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-4-281x300.png 281w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><\/figure>\n<\/figure>\n\n\n\n<p><strong>2.\ud3fc\ub514\uc790\uc778 \/ Form Deisgn<\/strong><\/p>\n\n\n\n<p>\u2714\ufe0f \uc88c\uce21\uc740 dialog.ui \uc624\ub978\ucabd\uc740 mainwinodw.ui<br>On the left is dialog.ui and on the right is mainwinodw.ui<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"468\" height=\"364\" data-id=\"2468\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-5.png\" alt=\"\" class=\"wp-image-2468\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-5.png 468w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-5-300x233.png 300w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"634\" data-id=\"2469\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-6.png\" alt=\"\" class=\"wp-image-2469\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-6.png 829w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-6-300x229.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-6-768x587.png 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n<\/figure>\n\n\n\n<p><strong>3.Header Files<\/strong><\/p>\n\n\n\n<p>\u2714\ufe0f Dialog.h<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#ifndef DIALOG_H\n#define DIALOG_H\n\n#include &lt;QDialog&gt;\n\nnamespace Ui {\nclass Dialog;\n}\n\nclass Dialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    \/\/ \uc554\uc2dc\uc801 \ud615\ubcc0\ud658\ubc29\uc9c0,\uc2e4\uc218 \ubc29\uc9c0\uc6a9\n    \/\/ To prevent implicit type conversion and mistakes\n    explicit Dialog(QWidget *parent = nullptr);\n\n    \/\/ \uc18c\uba78\uc790:\uac1d\uccb4 \uc0ad\uc81c\uc2dc \ud638\ucd9c\n    \/\/ Destructor: Called when the object is deleted\n    ~Dialog();\n\nprivate:\n    Ui::Dialog *ui;\n};\n\n#endif \/\/ DIALOG_H\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f mainwindow.h<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#ifndef MAINWINDOW_H\n#define MAINWINDOW_H\n\n#include &lt;QMainWindow&gt;\n\nQT_BEGIN_NAMESPACE\nnamespace Ui {\nclass MainWindow;\n}\nQT_END_NAMESPACE\n\nclass MainWindow : public QMainWindow\n{\n    Q_OBJECT\n\n    public:\n        MainWindow(QWidget *parent = nullptr);\n        ~MainWindow();\n\n    private:\n        Ui::MainWindow *ui;\n\n    private slots:\n        \/\/ \uc0c8\ucc3d \uc5f4\uae30 \uc2ac\ub86f\n        \/\/ Open new window slot\n        void openNewWindow();\n\n        \/\/ Label\ucd9c\ub825 \uc2ac\ub86f\n        \/\/ Label output slot\n        void updateLabel(const QString text);\n\n        \/\/ Dialog\uc2ac\ub86f\n        \/\/ Dialog slot\n        void openDialog();\n\n};\n#endif \/\/ MAINWINDOW_H\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f newwindow.h<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#ifndef NEWWINDOW_H\n#define NEWWINDOW_H\n\n\/\/ &lt;QWidget\uc758 \ud5e4\ub354\ud30c\uc77c\uc744 \ud3ec\ud568\n#include &lt;QWidget&gt;\n\n\n\/\/ \uc804\ubc29 \uc120\uc5b8(forward declaration)\n\/\/ class &lt;className&gt; \uc774\ub7f0 \ud615\uc2dd\ub9cc \uc788\ub294 \uacbd\uc6b0 \uc804\ubc29 \uc120\uc5b8\uc774\ub77c\uace0\ud569\ub2c8\ub2e4.\n\/\/ QLineEdit\uacfc QPushButton\uc744 \ud3ec\uc778\ud130\ub85c\ub9cc \uc0ac\uc6a9\ud560 \uacbd\uc6b0, \uc804\uccb4 \ud5e4\ub354\ub97c \ud3ec\ud568\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4.\n\/\/ \uc774\ub807\uac8c \ud558\uba74 \ucef4\ud30c\uc77c \uc18d\ub3c4\uac00 \ube68\ub77c\uc9c0\uace0, \uc758\uc874\uc131\uc774 \uc904\uc5b4\ub4ed\ub2c8\ub2e4.\n\n\n\/\/ Forward declaration\n\/\/ If the format is only class &lt;className&gt;, it is called a forward declaration.\n\/\/ If you only use QLineEdit and QPushButton as pointers, you don't need to include the entire header.\n\/\/ This speeds up compilation and reduces dependencies.\n\n\nclass QLineEdit;\nclass QPushButton;\n\nclass NewWindow : public QWidget\n{\n    \/\/ \ub9e4\ud06c\ub85c \/ macro\n    Q_OBJECT\n\npublic:\n    \/\/ \uc554\uc2dc\uc801 \ud615\ubcc0\ud658 \uae08\uc9c0 : \uc2e4\uc218 \ubc29\uc9c0, \ucf54\ub4dc \uba85\ud655\uc131, \uc548\uc804\ud55c \uc0dd\uc131\uc790 \ud638\ucd9c\n    \/\/ \uc554\uc2dc\uc801 \ud615\ubcc0\ud658\uc774\ub780 QT\uc790\uccb4\uc5d0\uc11c \ud30c\ub77c\uba54\ud130\ub85c \ub300\uc785\ub418\ub294 \uac12\uc744 \uc790\ub3d9\uc73c\ub85c \ucd94\uc815\ud558\ub294 \uae30\ub2a5\n\n    \/\/ Implicit type conversions are prohibited: Preventing mistakes, improving code clarity, and ensuring safe constructor calls.\n    \/\/ Implicit type conversion is a feature of QT itself that automatically infers the values \u200b\u200bassigned to parameters.\n\n    explicit NewWindow(QWidget *parent = nullptr);\n\nsignals:\n    \/\/ \uba54\uc778\ucc3d\uc73c\ub85c \ubcf4\ub0bc \uc2dc\uadf8\ub110\n    \/\/ Signal to send to the main window\n    void textSubmitted(const QString &amp;text);\n\nprivate:\n    QLineEdit* inputField;\n    QPushButton* confirmButton;\n\n};\n\n#endif \/\/ NEWWINDOW_H\n<\/code><\/pre>\n\n\n\n<p><strong>4. Source FIles<\/strong><\/p>\n\n\n\n<p>\u2714\ufe0f dialog.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"dialog.h\"\n#include \"ui_dialog.h\"\n\nDialog::Dialog(QWidget *parent)\n    : QDialog(parent)\n    , ui(new Ui::Dialog)\n{\n    ui-&gt;setupUi(this);\n}\n\n\n\/\/ \uc18c\uba78\uc790\n\/\/ destructor\nDialog::~Dialog()\n{\n    delete ui;\n}\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f main.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"mainwindow.h\"\n\n#include &lt;QApplication&gt;\n\nint main(int argc, char *argv&#91;])\n{\n    QApplication a(argc, argv);\n    MainWindow w;\n    w.show();\n    return a.exec();\n}\n\n\/\/ -- \ucf54\ub4dc \uc218\uc815 \uc5c6\uc74c \/ No code modification --\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f mainwindow.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"mainwindow.h\"\n#include \".\/ui_mainwindow.h\"\n\n\/\/ \uc0c8 \ucc3d \ud074\ub798\uc2a4 \ud3ec\ud568 \/ Include a new window class\n#include \"newwindow.h\"\n\n\/\/ dialog \ud074\ub798\uc2a4 \ud3ec\ud568 \/ Includes dialog class\n#include \"dialog.h\"\n\n\/\/ cout\uacfc \uc720\uc0ac\ud55c \ub514\ubc84\uae45 \ud074\ub798\uc2a4 \/ Debugging class similar to cout\n#include &lt;QDebug&gt;\n\n\/\/ \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 alert\uacfc \uc720\uc0ac\ud55c \ub514\ubc84\uae45 \ud074\ub798\uc2a4\n\/\/ A debugging class similar to JavaScript Alert\n#include &lt;QMessageBox&gt;\n\n\nMainWindow::MainWindow(QWidget *parent)\n    : QMainWindow(parent)\n    , ui(new Ui::MainWindow)\n{\n    ui-&gt;setupUi(this);\n\n    \/\/ \ubc84\ud2bc \ud074\ub9ad \uc2dc \uc0c8 \ucc3d \uc5f4\uae30\n    \/\/ Open a new window when the button is clicked\n    connect(ui-&gt;pushButton, &amp;QPushButton::clicked, this, &amp;MainWindow::openNewWindow);\n\n    \/\/ \ubc84\ud2bc \ud074\ub9ad\uc2dc \ub2e4\uc774\uc5bc\ub85c\uadf8 \ub744\uc6b0\uae30\n    \/\/ Pop up a dialog when a button is clicked\n    connect(ui-&gt;pushButton_2, &amp;QPushButton::clicked, this, &amp;MainWindow::openDialog);\n}\n\n\/\/ \uc0c8\ucc3d \ub744\uc6b0\ub294 \uc2ac\ub86f \ud568\uc218\n\/\/ Slot function to open a new window\nvoid MainWindow::openNewWindow(){\n\n    \/\/ === \ub514\ubc84\uae45 \/ Debugging ===\n    qDebug() &lt;&lt; \"openNewWindow \uc2ac\ub86f \uc2e4\ud589\ub428\/slot executed!\";\n\n    \/\/QMessageBox::information(this, \"\ud14c\uc2a4\ud2b8\/test\", \"\uc2ac\ub86f\uc774 \uc2e4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4\/The slot has been run.!\");\n\n    \/\/ \ubd80\ubaa8 \uc5c6\uc774 \ub3c5\ub9bd \ucc3d(\ub514\ubc84\uae45)\n    \/\/ Independent window without parent (debugging)\n    \/\/NewWindow* window = new NewWindow(nullptr);\n\n\n    NewWindow* window = new NewWindow(this);\n\n    \/\/ \ub3c5\ub9bd\ub41c \ucc3d\uc73c\ub85c \uc124\uc815\n    \/\/ Set as independent window\n    window-&gt;setWindowFlags(Qt::Window);\n\n    \/\/ \uc2dc\uadf8\ub110\uacfc \uc2ac\ub86f \uc5f0\uacb0(\ub77c\ubca8 \ucd9c\ub825\uc6a9)\n    \/\/ Connecting signals and slots (for label output)\n    connect(window, &amp;NewWindow::textSubmitted, this, &amp;MainWindow::updateLabel);\n\n    \/\/ \ub2eb\uc744 \ub54c \uba54\ubaa8\ub9ac \uc790\ub3d9 \ud574\uc81c\n    \/\/ Automatically free memory when closing\n    window-&gt;setAttribute(Qt::WA_DeleteOnClose);\n    window-&gt;show();\n\n}\n\n\/\/ MainWindow\uc758 \ub77c\ubca8\uc5d0 \ud14d\uc2a4\ud2b8 \ucd9c\ub825\ud558\ub294 \uc2ac\ub86f \ud568\uc218\n\/\/ Slot function that outputs text to the label of MainWindow\n\/\/ newwindow.cpp\uc5d0\uc11c \uc2dc\uadf8\ub110 \ubc1c\uc0dd\n\/\/ Signal generated in newwindow.cpp\nvoid MainWindow::updateLabel(const QString text){\n\n    \/\/ \ub77c\ubca8\uc5d0 \ud14d\uc2a4\ud2b8 \ucd9c\ub825\n    \/\/ Print text to label\n    ui-&gt;label-&gt;setText(text);\n}\n\n\n\/\/ \ub2e4\uc774\uc5bc\ub85c\uadf8 \ucc3d \ub744\uc6b0\ub294 \uc2ac\ub86f \ud568\uc218\n\/\/ Slot function to open a dialog window\nvoid MainWindow::openDialog()\n{\n    Dialog* dialog = new Dialog(this);\n\n    \/\/ \ub2e4\uc774\uc5bc\ub85c\uadf8 \ucc3d\uc73c\ub85c \uc124\uc815\n    \/\/ Set to dialog window\n    dialog-&gt;setWindowFlags(Qt::Dialog);\n\n    \/\/ \ub2eb\uc744\ub54c \uba54\ubaa8\ub9ac\ud574\uc81c\n    \/\/ Free memory when closing\n    dialog-&gt;setAttribute(Qt::WA_DeleteOnClose);\n    dialog-&gt;show();\n}\n\n\n\/\/ \uc18c\uba78\uc790 \/ destructor\n\/\/ \uac1d\uccb4\uac00 \uc0ad\uc81c\ub418\uac70\ub098 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0a0 \ub54c \uc790\ub3d9\uc73c\ub85c \ud638\ucd9c\ub418\ub294 \ud568\uc218\uc785\ub2c8\ub2e4.\n\/\/ A function that is automatically called when an object is deleted or goes out of scope.\nMainWindow::~MainWindow()\n{\n    delete ui;\n}\n<\/code><\/pre>\n\n\n\n<p>.\u2714\ufe0f newwindow.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"newwindow.h\"\n#include &lt;QVBoxLayout&gt;\n#include &lt;QLineEdit&gt;\n#include &lt;QPushButton&gt;\n#include &lt;QDebug&gt;\n\nNewWindow::NewWindow(QWidget *parent) : QWidget(parent)\n{\n    setWindowTitle(\"new window\");\n    resize(400,300);\n\n    \/\/ ui\ucd94\uac00,ui\ub514\uc790\uc778 \ud30c\uc77c \uc5c6\ub294 \uacbd\uc6b0.\n    \/\/ Add UI, if there is no UI design file.\n    inputField = new QLineEdit(this);\n    confirmButton = new QPushButton(\"\ud655\uc778\/Confirm\",this);\n\n    QVBoxLayout* layout = new QVBoxLayout(this);\n    layout-&gt;addWidget(inputField);\n    layout-&gt;addWidget(confirmButton);\n\n    \/\/&amp;QPushButton::clicked \uc774 \uc2dc\uadf8\ub110 \ubc1c\uc0dd\uc2dc &#91;this]()\uc2ac\ub86f \ud568\uc218 \uc2e4\ud589\n    \/\/&amp;QPushButton::clicked When this signal occurs, the &#91;this]() slot function is executed.\n    connect(confirmButton, &amp;QPushButton::clicked, this, &#91;this](){\n        QString text = inputField-&gt;text();\n        emit textSubmitted(text); \/\/ \uc2dc\uadf8\ub110 \ubc1c\uc0dd\n        qDebug() &lt;&lt; \"\uc785\ub825\ub41c \ud14c\uc2a4\ud2b8\/Enterd TExt:\" &lt;&lt; text;\n\n        \/\/close();\/\/ \ucc3d\ub2eb\uae30 \/ Close window\n    });\n}\n<\/code><\/pre>\n\n\n\n<p><strong>5.\uc2e4\ud589 \/ Run<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"943\" height=\"665\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8.png\" alt=\"\" class=\"wp-image-2465\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8.png 943w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-300x212.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2025\/10\/example-8-768x542.png 768w\" sizes=\"auto, (max-width: 943px) 100vw, 943px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49 \ubc84\ud2bc \ud074\ub9ad\uc2dc \ub2e4\uc774\uc5bc\ub85c\uadf8 \ucc3d\uacfc \uc0c8\ub85c\uc6b4 \ucc3d\uc744 \uc624\ud508\ud569\ub2c8\ub2e4.When you click the button, a dialog window and a new window open. \ud83d\udc49 \uc0c8\ub85c\uc6b4 \ucc3d\uc5d0\uc11c \ud14d\uc2a4\ud2b8 \uc785\ub825\ud558\uace0 \ubc84\ud2bc \ud074\ub9ad\uc2dc mainwindow\uc758 \ub77c\ubca8\uc5d0 \ud14d\uc2a4\ud2b8\uac00 \ucd9c\ub825\ub429\ub2c8\ub2e4.Enter text in a new window and click the button to display the text in the label of the mainwindow. \ud83d\udc49 \uc0c8\ub85c\uc6b4\ucc3d\uacfc \uc774\uc804 \ucc3d \uc0ac\uc774\uc758 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,1],"tags":[],"class_list":["post-2456","post","type-post","status-publish","format-standard","hentry","category-qt","category-uncategorized","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/2456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=2456"}],"version-history":[{"count":10,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/2456\/revisions"}],"predecessor-version":[{"id":2473,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/2456\/revisions\/2473"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=2456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=2456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=2456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}