16 QObject *obj =
new QPushButton;
17 obj->metaObject()->className();
19 QPushButton::staticMetaObject.className();
25 QPushButton::staticMetaObject.className();
27 QObject *obj =
new QPushButton;
28 obj->metaObject()->className();
34 QObject *obj =
new QTimer;
36 QTimer *timer = qobject_cast<QTimer *>(obj);
39 QAbstractButton *button = qobject_cast<QAbstractButton *>(obj);
46 QTimer *timer =
new QTimer;
47 timer->inherits(
"QTimer");
48 timer->inherits(
"QObject");
49 timer->inherits(
"QAbstractButton");
52 QVBoxLayout *layout =
new QVBoxLayout;
53 layout->inherits(
"QObject");
54 layout->inherits(
"QLayoutItem");
60 qDebug(
"MyClass::setPrecision(): (%s) invalid precision %f",
61 qPrintable(objectName()), newPrecision);
81 textEdit =
new QTextEdit;
82 setCentralWidget(textEdit);
84 textEdit->installEventFilter(
this);
89 if (obj == textEdit) {
90 if (event->type() == QEvent::KeyPress) {
91 QKeyEvent *keyEvent =
static_cast<QKeyEvent*>(event);
92 qDebug() <<
"Ate key press" << keyEvent->key();
99 return QMainWindow::eventFilter(obj, event);
107 myObject->moveToThread(QApplication::instance()->thread());
129 using namespace std::chrono_literals;
139 qDebug() <<
"Timer ID:" << event->id();
147 QPushButton *button = parentWidget->findChild<QPushButton *>(
"button1");
153 QListWidget *list = parentWidget->findChild<QListWidget *>();
159 QList<QWidget *> widgets = parentWidget->findChildren<QWidget *>(
"widgetname");
165 QList<QPushButton *> allPButtons = parentWidget->findChildren<QPushButton *>();
171 monitoredObj->installEventFilter(filterObj);
190 if (event->type() == QEvent::KeyPress) {
191 QKeyEvent *keyEvent =
static_cast<QKeyEvent *>(event);
192 qDebug(
"Ate key press %d", keyEvent->key());
196 return QObject::eventFilter(obj, event);
212 QPushButton *pushButton =
new QPushButton(
this);
213 QListView *listView =
new QListView(
this);
215 pushButton->installEventFilter(keyPressEater);
216 listView->installEventFilter(keyPressEater);
223 QLabel *senderLabel =
new QLabel(tr(
"Name:"));
224 QLabel *recipientLabel =
new QLabel(tr(
"Name:",
"recipient"));
238 if (receivers(SIGNAL(valueChanged(QByteArray))) > 0) {
240 get_the_value(&data);
241 emit valueChanged(data);
247 QLabel *label =
new QLabel;
248 QScrollBar *scrollBar =
new QScrollBar;
249 QObject::connect(scrollBar, SIGNAL(valueChanged(
int)),
250 label, SLOT(setNum(
int)));
256 QObject::connect(scrollBar, SIGNAL(valueChanged(
int value)),
257 label, SLOT(setNum(
int value)));
274 QPushButton *myButton;
279 myButton =
new QPushButton(
this);
280 connect(myButton, SIGNAL(clicked()),
281 this, SIGNAL(buttonClicked()));
287QObject::connect: Cannot queue arguments of type
'MyType'
288(Make sure
'MyType' is registered
using qRegisterMetaType().)
297 QObject::disconnect(myObject,
nullptr,
nullptr,
nullptr);
302 myObject->disconnect();
307 QObject::disconnect(myObject, SIGNAL(mySignal()),
nullptr,
nullptr);
312 myObject->disconnect(SIGNAL(mySignal()));
317 QObject::disconnect(myObject,
nullptr, myReceiver,
nullptr);
322 myObject->disconnect(myReceiver);
327 if (signal == QMetaMethod::fromSignal(&MyObject::valueChanged)) {
335void on_<object name>_<signal name>(<signal parameters>);
343namespace MyClassExample1
349 Q_CLASSINFO(
"Author",
"Pierre Gendron")
350 Q_CLASSINFO(
"URL",
"http://www.my-organization.qc.ca")
358 Q_PROPERTY(QString title READ title WRITE setTitle USER
true)
362namespace MyClassExample2
365 class MyClass :
public QObject
370 MyClass(QObject *parent =
nullptr);
373 enum Priority { High, Low, VeryHigh, VeryLow };
375 void setPriority(Priority priority);
376 Priority priority()
const;
381void snippets_41_44(QWidget *parentWidget)
384 QPushButton *button = parentWidget->findChild<QPushButton *>(
"button1", Qt::FindDirectChildrenOnly);
389 QListWidget *list = parentWidget->findChild<QListWidget *>(Qt::FindDirectChildrenOnly);
393 QWidget parentWidget;
395 QList<QPushButton *> childButtons = parentWidget.findChildren<QPushButton *>(Qt::FindDirectChildrenOnly);
399 QLabel *label =
new QLabel;
400 QLineEdit *lineEdit =
new QLineEdit;
401 QObject::connect(lineEdit, &QLineEdit::textChanged,
402 label, &QLabel::setText);
411 QPushButton *button =
new QPushButton;
412 QObject::connect(button, &QPushButton::clicked, someFunction);
420namespace TcpSocketExample
422 class MyObject :
public QObject
427 MyObject(QObject *parent =
nullptr);
429 void snippets_46_to_48_51( MyObject *myObject, QLineEdit *lineEdit, QLabel *label)
432 QByteArray page =
"...";
433 QTcpSocket *socket =
new QTcpSocket;
434 socket->connectToHost(
"qt-project.org", 80);
435 QObject::connect(socket, &QTcpSocket::connected, [=] () {
436 socket->write(
"GET " + page +
"\r\n");
441 QObject::disconnect(myObject, &MyObject::mySignal,
nullptr,
nullptr);
445 QObject::disconnect(lineEdit, &QLineEdit::textChanged,
446 label, &QLabel::setText);
450 static const QMetaMethod valueChangedSignal = QMetaMethod::fromSignal(&MyObject::valueChanged);
451 if (QObject::isSignalConnected(valueChangedSignal)) {
453 data = get_the_value();
454 emit valueChanged(data);
460 QByteArray page =
"...";
461 QTcpSocket *socket =
new QTcpSocket;
462 socket->connectToHost(
"qt-project.org", 80);
463 QObject::connect(socket, &QTcpSocket::connected,
this, [=] () {
464 socket->write(
"GET " + page +
"\r\n");
465 }, Qt::AutoConnection);
470 QByteArray get_the_value();
474 void someOtherFunction()
476 QPushButton *button =
new QPushButton;
477 QObject::connect(button, &QPushButton::clicked,
this, someFunction, Qt::QueuedConnection);
482 void valueChanged(QByteArray &data);
486 void timerEvent(QTimerEvent *event) override;
498class MyClass :
public QWidget
503 MyClass(QWidget *parent =
nullptr);
506 bool event(QEvent* ev) override
508 if (ev->type() == QEvent::PolishRequest) {
512 }
else if (ev->type() == QEvent::Show) {
519 return QWidget::event(ev);
529 const QSignalBlocker blocker(someQObject);
535 const bool wasBlocked = someQObject->blockSignals(
true);
537 someQObject->blockSignals(wasBlocked);
540 using namespace std::chrono_literals;
546 const auto id = Qt::TimerId {obj->startTimer(100ms)};
547 if (id != Qt::TimerId::Invalid)
bool eventFilter(QObject *obj, QEvent *ev) override
Filters events if this object has been installed as an event filter for the watched object.
void timerEvent(QTimerEvent *event) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
void on_button1_clicked()
[34]
void examples(int newPrecision)
void blocker_and_invalid_timer_id_examples(QObject *someQObject)
[52]
void move_example(QObject *myObject)
[6]
void qpushbutton_examples(QWidget *parentWidget, QObject *monitoredObj, QObject *filterObj)
[8]
void snippets_26_to_32(QObject *myObject, QObject *myReceiver, const QMetaMethod &signal)
[24]
void valueChanged(const QByteArray &data)
void get_the_value(QByteArray *data)
int receivers(const char *signal)