/*#include <QApplication>
#include <QWidget>
#include <QDebug>
#include <QWidget>
class MyDerivedWidget1 : public QWidget {
    Q_OBJECT
public:
    explicit MyDerivedWidget1(QWidget *parent = nullptr){};
};
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    // Create an instance of MyDerivedWidget1
    MyDerivedWidget1 *widget1 = new MyDerivedWidget1();
    if (widget1) {
        widget1->show();
        qDebug() << "Created widget of type:" << widget1->metaObject()->className();
    } else {
        qDebug() << "Failed to create MyDerivedWidget1";
    }
    widget1->metaObject()->className();
    return app.exec();
}
#include"main.moc"
*/
#include <QApplication>
#include <QWidget>
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QMetaObject>
#include <QMetaMethod>
#include <QDebug>
// 假设这是自定义的控件类
class MyDerivedWidget1 : public QWidget {
    Q_OBJECT
public:
    explicit MyDerivedWidget1(QWidget *parent = nullptr) : QWidget(parent) {
        QVBoxLayout *layout = new QVBoxLayout(this);
        QPushButton *button = new QPushButton("Click Me", this);
        layout->addWidget(button);
        // 使用 QObject::connect 方法连接信号和槽
        connect(button, &QPushButton::clicked, this, &MyDerivedWidget1::onButtonClicked);
    }
public slots:
    void onButtonClicked() {
        qDebug() << "Button clicked!";
    }
};
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    // 动态创建控件
    MyDerivedWidget1 *widget = new MyDerivedWidget1();
    widget->show();
    // 获取信号和槽
    const QMetaObject *metaObject = widget->metaObject();
    int signalIndex = metaObject->indexOfSignal(QMetaObject::normalizedSignature("clicked()"));
    int slotIndex = metaObject->indexOfSlot(QMetaObject::normalizedSignature("onButtonClicked()"));
    if (signalIndex != -1 && slotIndex != -1) {
        QMetaMethod signalMethod = metaObject->method(signalIndex);
        QMetaMethod slotMethod = metaObject->method(slotIndex);
        // 动态连接信号和槽
        QObject::connect(widget->findChild<QPushButton*>(), signalMethod, widget, slotMethod);
    } else {
        qDebug() << "Failed to find signal or slot";
    }
    return app.exec();
}
#include"main.moc"
For further actions, you may consider blocking this person and/or reporting abuse
 

 
    
Top comments (0)