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

标签 c++ qt function

我正在尝试将用户定义的函数与 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/

相关文章:

jQuery Ready 函数区别

arrays - 函数中的闭包数组参数

c++ - 改进折叠功能

c++ - 随机 : no such file or directory

c++ - 将 QOpenGLWidget 子类转换为使用 Metal 而不是 OpenGL 的子类是否可行?

c++ - 尝试删除 QTextEdit 中的单词时出现 Qt 简单错误

qt - JOM 找不到 Makefile

c++ - 使用mysql加载数据infile相对路径错误

c++ - 如何在 C++ 中按字母顺序排列数组中的字符串?

jquery - 如何在单击元素时传递 jquery 范围?