New Signals and Slots Features in Qt 5
(Redirected from New Signal Slot features qt5)
En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh
This small (cross platform) application demonstrates a few new features that come with Qt 5: the ability to connect to C++ functor objects, non member outer class functions and c++11 lambdas.
main.cpp:
#include "test.h"
void outer_func() { std::printf("this is a test by outer class func;)"); }
void functor::operator() (bool) { std::printf("this is a test by functor;)"); }
int main(int argc,char* argv[]) {
QApplication app(argc, argv);
Ui_Form ui;
QWidget* form=new QWidget();
ui.setupUi(form);
form->show();
return app.exec();
}
test.h
#ifndef TEST_H
#define TEST_H
#include <QVariant>
#include <QAction>
#include <QApplication>
#include <QButtonGroup>
#include <QHeaderView>
#include <QPushButton>
#include <QWidget>
#include <cstdio>
void outer_func();
class functor
{
public:
void operator() (bool);
};
functor a_functor; // create an instance of functor
class Ui_Form
{
public:
QPushButton *pushButton;
void setupUi(QWidget *Form)
{
Form->setObjectName(QStringLiteral("Form"));
Form->resize(600, 100);
pushButton = new QPushButton(Form);
pushButton->setObjectName(QStringLiteral("pushButton"));
pushButton->setGeometry(QRect(10, 50, 580, 33));
pushButton->connect(pushButton,&QAbstractButton::clicked,outer_func);
pushButton->connect(pushButton,&QAbstractButton::clicked,a_functor);
pushButton->connect(pushButton,&QAbstractButton::clicked,[=] (bool){std::printf("This is a test by lambda;)");});
Form->setWindowTitle(QString("Form"));
pushButton->setText(QString("connect functor and outer class func simultaneously"));
} // setupUi
};
#endif // TEST_H
and test.pro
TEMPLATE = app
TARGET = test
INCLUDEPATH += .
QT += widgets # mandatory needed for gui on qt5
CONFIG += c++11 # needed for lambda
HEADERS += test.h
SOURCES += main.cpp