适用于以下类型的信号和插槽
signals:
void textChanged(const QString &);
public slots:
void setText(const QString & text)
Run Code Online (Sandbox Code Playgroud)
textChanged和setText的参数类型似乎无法使用const和&.与仅使用QString相比,常量和参考资格是否有任何区别?
QObject::connect(a,SIGNAL(textChanged(QString)),b,SLOT(setText(QString)));
QObject::connect(a,SIGNAL(textChanged(const QString &)),b,SLOT(setText(const QString &)));
Run Code Online (Sandbox Code Playgroud)
编辑:当SIGNAL或SLOT中使用不兼容的类型时,我没有注意到输出窗口显示错误消息.我认为信号槽机制能够在编译时检测参数类型错误.
我有MainWindow和QNAMRedirect类,我正在尝试编译程序,但收到编译器错误.
这是QNAMRedirect课程:
class QNAMRedirect : public QObject
{
Q_OBJECT
public:
explicit QNAMRedirect(QObject *parent = 0);
~QNAMRedirect();
signals:
public slots:
void doRequest();
void replyFinished(QNetworkReply* reply);
signals:
void finished(QString);
private:
QPointer<QNetworkAccessManager> _qnam;
QUrl _originalUrl;
QUrl _urlRedirectedTo;
QNetworkAccessManager* createQNAM();
};
Run Code Online (Sandbox Code Playgroud)
这是MainWindow班级:
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_request_clicked();
private:
Ui::MainWindow *ui;
};
Run Code Online (Sandbox Code Playgroud)
我试图以这种方式将NAMRedirect::finished(QString)信号连接到QTextEdit小部件MainWindow …
我正在根据这位导师http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-exposecppattributes.html在 Qt5 中将 C++ 类型的属性暴露给 QML 。当我运行它时,我在我的问题窗格错误中收到此错误:变量“QQmlComponent 组件”具有初始值设定项但类型不完整不仅我有此错误我也有此错误未检测到我使用 Q_PROPERTY 创建的信号
C:\Users\Tekme\Documents\QtStuf\quick\QmlCpp\message.h:15: 错误:'authorChanged' 未在此范围内声明发出 authorChanged(); ^
我的代码是
#ifndef MESSAGE_H
#define MESSAGE_H
#include <QObject>
class Message : public QObject
{
Q_OBJECT
Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged)
public:
void setAuthor(const QString &a) {
if (a != m_author) {
m_author = a;
emit authorChanged();
}
}
QString author() const {
return m_author;
}
private:
QString m_author;
};
#endif
Run Code Online (Sandbox Code Playgroud)
在我的 main.cpp 中
#include "message.h" …Run Code Online (Sandbox Code Playgroud)