标题:connect()无法编译通过
作者:qscbmn
日期:2016-07-19 21:12
内容:
mainWindow.h:
#include #include #include #include class MainWindow : public QWidget{Q_OBJECT
public:explicit MainWindow(QWidget *parent = 0);~MainWindow();
protected:void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;};
#endif // MAINWINDOW_Hmainwindow.cpp:#include [color=# ..
#1 [qscbmn 07-19 21:14]
重发一遍:
mainWindow.h:
#include #include #include #include class MainWindow : public QWidget{Q_OBJECT
public:explicit MainWindow(QWidget *parent = 0);~MainWindow();
protected:void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"#include "ui_mainwindow.h"const int SIZE=200;
MainWindow::MainWindow(QWidget *parent) :QWidget(parent){……QTimer *timer=new QTimer(this);//connect(timer,SIGNAL(timeout()),this,SLOT(update()));connect(timer,&QTimer::timeout,this,&QWidget::update);//connect(timer,&QTimer::timeout,this,&MainWindow::update);……}
使用connect(timer,&QTimer::timeout,this,&QWidget::update);或者connect(timer,&QTimer::timeout,this,&MainWindow::update);编译错误:error: no matching function for call to 'MainWindow::connect(QTimer*&, void (QTimer::*)(QTimer::QPrivateSignal), MainWindow*, )'
connect(timer,&QTimer::timeout,this,&QWidget::update);
请问这是怎么回事?该怎么解决?
#2 [never_forget 07-22 10:48]
试试普通的信号看看,这样{connect(timer,SIGNAL(timeout()),this,SLOT(update()));}应该可以的!
#3 [dbzhang800 07-22 11:40]
QWidget::update() 有四个重载函数,你必须指明用哪一个。
如果你的Qt低于5.7 ,你需要用类型转换,转成你需要的重载函数的函数指针
如果不低于5.7,你可以用qOverload 或 QOverload 选择合适的重载函数的函数指针
#4 回 dbzhang800 的帖子 [qscbmn 07-22 19:27]
dbzhang800:QWidget::update() 有四个重载函数,你必须指明用哪一个。
如果你的Qt低于5.7 ,你需要用类型转换,转成你需要的重载函数的函数指针
如果不低于5.7,你可以用qOverload 或 QOverload 选择合适的重载函数的函数指针(2016-07-22 11:40)
原来如此,谢啦