gpt4 book ai didi

c++ - 使用两个不同的类在 qt 中连接

转载 作者:行者123 更新时间:2023-11-30 04:59:16 33 4
gpt4 key购买 nike

我想连接来自两个不同类的信号和插槽,其中一个正在使用另一个类,如下例所示:

form.hpp

class Form : public QDialog
{
Q_OBJECT

public:
explicit Form();
public slots:
void onPushButton(void);

};

form.cpp

Form::Form() :
QDialog(parent)
{
ui->setupUi(this);
connect(..., SIGNAL(clicked()),..., SLOT(onPushButton()));

}

void Form::onPushButton(void)
{
ui->pushButton->setText(QString("clicked"));
}

mainwindow.hpp

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);

private:
Ui::MainWindow *ui;
Form f;
};

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

我知道这很容易解决,但我不知道该怎么做。 Form::Form()connect 的语法是什么?如果是这样的话,我会这样做:

connect(&f, SIGNAL(clicked()),this, SLOT(onPushButton()));

最佳答案

连接必须在 MainWindow 构造函数中进行,但您必须使用 lambda 方法,因为信号不会将文本传递给它。

form.h

class Form : public QDialog
{
Q_OBJECT

public:
explicit Form();
public slots:
void processingFunction(const QString & text);

};

表单.cpp

Form::Form() :
QDialog(parent),
ui(new Ui::Form)
{
ui->setupUi(this);

}

void Form::processingFunction(const QString & text)
{
// some processing
}

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, &QPushButton::clicked, [this](){
f.processingFunction(ui->lineEdit->text());
});
}

关于c++ - 使用两个不同的类在 qt 中连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51309144/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com