轉(zhuǎn)轉(zhuǎn)于:http://t.csdn.cn/K3aYh
初學(xué)QT,在嘗試用connect手動(dòng)關(guān)聯(lián)一個(gè)按鈕和QlineEdit的時(shí)候編譯報(bào)錯(cuò),如下:
然后貼上主要代碼塊:
//以下是mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
public slots:
void self_pushButton_clicked();
};
#endif // MAINWINDOW_H
//以下是mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPushButton>
#include<QLineEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->myline->setText("hello");
ui->mybtn->setText("clicked me");
connect(ui->mybtn,&QPushButton::clicked,ui->myline,&MainWindow::self_pushButton_clicked);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::self_pushButton_clicked()
{
ui->myline->setText("你好");
}
ui長這樣:
上網(wǎng)查了查,這種錯(cuò)誤叫重載不匹配(好像叫這個(gè)名),于是我找了半天沒找到哪里不匹配,期間去問了某個(gè)大佬學(xué)長結(jié)果學(xué)長也沒看出來,總之經(jīng)過兩天的折磨之后被迫重新從自定義信號(hào)和槽去學(xué),才注意到這樣的一條規(guī)則
connect(發(fā)送信號(hào)的類,&信號(hào)函數(shù),接收信號(hào)的類,&槽函數(shù));[QT5]
期中信號(hào)函數(shù)一般是發(fā)送信號(hào)類的成員函數(shù),而槽函數(shù)一般是接收信號(hào)的類的成員函數(shù);(槽函數(shù)也可以是全局函數(shù))
再來看原來程序里的connect:
connect(ui>mybtn,&QPushButton::clicked,ui>myline,&MainWindow::self_pushButton_clicked);
這里myline是ui里引入的一個(gè)QlineEdit類。
所以問題就很明白了!
因?yàn)閟elf_pushButton_clicked()不是QlineEdit的成員函數(shù),所以自然是不匹配的,它是MainWindow的成員函數(shù),所以這句話的正確表述是:
connect(ui>mybtn,&QPushButton::clicked,this,&MainWindow::self_pushButton_clicked);
沒錯(cuò)這個(gè)SB錯(cuò)誤困擾了我兩天充分證明了我也是SB
以上文章來源:http://www.zghlxwxcb.cn/news/detail-465259.html
(小白第一次發(fā)博客,寫的不對(duì)還請(qǐng)包容指出,謝謝)文章來源地址http://www.zghlxwxcb.cn/news/detail-465259.html
到了這里,關(guān)于QT使用信號(hào)與槽時(shí)編譯錯(cuò)誤“no matching function for call to connect“的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!