Qt_7 - 8BitsCoding/RobotMentor GitHub Wiki

qDebug() ์‚ฌ์šฉํ•˜๊ธฐ

#include <QtCore/qdebug.h>

qDebug() << "MyDialog constructor called" << endl;
qDebug() << "MyDialog destuctor called" << endl;

๋ผ์•„ํ”„ ์‚ฌ์ดํด ํ™•์ธ

main ๋ฌธ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„๋•Œ

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

	MyDialog* dialog = new MyDialog;

	QObject::connect(dialog, SIGNAL(onKeywordMatched(const QString&)), &app, SLOT(quit()));

	dialog->show();

	return app.exec();
}

MyDialog* dialog = new MyDialog;๋Š” ์–ธ์ œ ์‚ญ์ œ๋˜๋Š”๊ฐ€? ํ”„๋กœ๊ทธ๋žจ์ด ์ฃฝ์„๋•Œ??

MyDialog::~MyDialog()
{
	qDebug() << "MyDialog destuctor called" << endl;
}

์œ„์™€ ๊ฐ™์ด ์†Œ๋ฉธ์ž์— qDebug๋ฅผ ๋„ฃ์–ด๋ณด๋ฉด ์•Œ์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ์ด ์ฃฝ์„๋•Œ ์†Œ๋ฉธ์ž๊ฐ€ ๊ฐ™์ด ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค???

์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ??

MyDialog dialog;

์Šคํ…์— ์ƒ์„ฑํ•˜๊ธฐ

์ผ๋ฐ˜์ ์œผ๋กœ QObject์—์„œ ์ƒ์„ฑํ•œ ํด๋ž˜์Šค๋“ค์€ Heap์— ์Œ“๊ธฐ๋ฅผ ์ถ”์ฒœํ•œ๋‹ค.


QMyDialog๋‚ด์˜ ์ž์‹๋“ค์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์€??

์šฐ์„  mydialog์—์„œ ์‚ฌ์šฉํ•  mywidget์„ ์ƒ์„ฑํ•œ๋‹ค.

#pragma once
#include <qwidget.h>
#include <QtWidgets/QPushButton.h>

class mywidget : public QWidget
{
	Q_OBJECT
public:
	explicit mywidget(QWidget* parent = 0);
	virtual ~mywidget();

	QPushButton* button;
	
signals:

public slots:
};
#include "mywidget.h"
#include <iostream>
#include <QtCore/qdebug.h>
#include <QtWidgets/qlayout.h>

using namespace std;

mywidget::mywidget(QWidget* parent) : QWidget(parent)
{
	qDebug() << "mywidget constructor called" << endl;
	button = new QPushButton;

	QHBoxLayout* layout = new QHBoxLayout;
	layout->addWidget(button);

	setLayout(layout);
}

mywidget::~mywidget()
{
	qDebug() << "mywidget destructor called" << endl;
}

mydialog์— ์ถ”๊ฐ€ํ•œ๋‹ค.

// mydialog.h
class QLineEdit;
class mywidget;

class MyDialog : public QDialog{
	Q_OBJECT
public:
	explicit MyDialog(QDialog* parent = nullptr);
	virtual ~MyDialog();

	QLineEdit* lineEdit;
	mywidget* widget;
// mydialog.cpp
#include <mywidget.h>
		
using namespace std;

MyDialog::MyDialog(QDialog* parent) : QDialog(parent) {
	qDebug() << "MyDialog constructor called" << endl;
	lineEdit = new QLineEdit;
	widget = new mywidget;

	QObject::connect(lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(myTextChangd(const QString&)));

	QVBoxLayout* layout = new QVBoxLayout;
	layout->addWidget(lineEdit);
	layout->addWidget(widget);

	setLayout(layout);
}

์ด๋ ‡๊ฒŒ ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•  ๊ฒฝ์šฐ mywidget์˜ ์†Œ๋ฉธ์ž ๊นŒ์ง€ ํ˜ธ์ถœ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ