gpt4 book ai didi

c++ - 使用 QObject::connect() 将函数连接到信号时,类型签名是否重要?

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:03 25 4
gpt4 key购买 nike

我正在尝试将用户定义的函数与 QComboBox activated() 信号连接起来,就像这样(在 mainwindow.cpp 中):

QObject::connect(ui->comboBox, SIGNAL(activated(QString)), obj.sChange());

然后定义 sChange 函数:

void MainWindow::sChange(QString str)
{
//Some code here.
}

它在 QObject::connect() 行给我一个错误,它说 无效使用 void 表达式。我做错了什么??

编辑:这是我完整的 mainwindow.h

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
//void sChange(QString);

private slots:
void on_pushButton_clicked();

private:
Ui::MainWindow *ui;

public slots:
void sChange(QString);
};

最佳答案

尝试:

QObject::connect(ui->comboBox, SIGNAL(activated(QString)), this, SLOT(sChange(QString)));

并确保 MainWindow 在类的顶部有 Q_OBJECT 宏,并且在标题 sChange() 中声明为公共(public)槽:(或 protected 或其他)。我假设此连接是在主窗口代码中的某处完成的,否则将“this”替换为指向 MainWindow 的指针。

此外,如果那是组合框的实例而不是指向组合框的指针,您可能需要执行 &ui->comboBox。

关于c++ - 使用 QObject::connect() 将函数连接到信号时,类型签名是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046954/

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