C++ QTimer不完全类型
我经常使用QTimer。但现在它正在失败,我不明白为什么:C++ QTimer不完全类型,c++,qt,C++,Qt,我经常使用QTimer。但现在它正在失败,我不明白为什么: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QtGui/QPushButton> #include <QtGui/QTextEdit> #include <QtGui/QMessageBox> #include <QtCore/QCoreApplication> //
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QTextEdit>
#include <QtGui/QMessageBox>
#include <QtCore/QCoreApplication>
// Server
#include <sys/socket.h>
#include <netinet/in.h>
// Client
//#include <sys/socket.h>
//#include <netinet/in.h>
#include <netdb.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QPushButton *m_btn1;
QPushButton *m_btn2;
QTextEdit *m_txt1;
QTextEdit *m_txt2;
QTimer *timerDisplay;
void UpdateDisplay();
private slots:
void handleBtn1();
void handleBtn2();
};
#endif // MAINWINDOW_H
你忘了:
#include <QTimer>
致:
然后在cpp文件中包含
另一个问题是UpdateDisplay()函数不是插槽,即使您试图将信号连接到它。因此,将该函数的声明移动到专用插槽:
部分。出现的另一个问题是回调:UpdateDisplay未在“插槽”中声明@jdl是的,您需要将其设置为插槽。更新答案。用class
关键字声明对象有什么区别?在类QTimer*timerDisplay
@SubinSebastian中,它是一个转发声明。它告诉编译器QTimer
是类的名称。这允许我们省略
标题的包含。可能重复
#include <QTimer>
QTimer *timerDisplay;
class QTimer *timerDisplay;