Important for newbie!



  • this small app(cross platform) demonstrates two new feature coming by qt5. thats to ability connect functor, non member outer class function and lambda function. main.cpp:
    @
    #include "test.h"

    void outer_func(){std::printf("this is a test by outer class func;)\n");}
    void functor::operator() (bool) {std::printf("this is a test by functor;)\n");}

    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 <QtCore/QVariant>
    #include <QtWidgets/QAction>
    #include <QtWidgets/QApplication>
    #include <QtWidgets/QButtonGroup>
    #include <QtWidgets/QHeaderView>
    #include <QtWidgets/QPushButton>
    #include <QtWidgets/QWidget>
    #include <cstdio>

    void outer_func();
    class functor{public:void operator() (bool);};

    functor a_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;)\n");});
    
        Form->setWindowTitle(QString("Form"));
        pushButton->setText(QString("connect functor and outer class func simultaneously"));
    } // setupUi
    

    };
    #endif // TEST_H
    @
    test.pro
    @
    TEMPLATE = app
    TARGET = test
    INCLUDEPATH += .
    QT += widgets
    QMAKE_CXXFLAGS += -std=c++11 #needed for lambda
    HEADERS += test.h
    SOURCES += main.cpp
    @



  • Also i entered this to wiki. Its title is "new signal slot features qt5"


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.