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