【发布时间】:2013-02-17 01:25:44
【问题描述】:
我的 Qt 应用程序有问题。我正在尝试从另一个类中发出信号(它是放置信号的类的嵌套类)。
我已经用插槽连接了信号,应该没问题。但是当我尝试从这个嵌套类中发出这个信号时,我得到了编译器错误:
没有对象就不能调用成员函数
怎么了?我在 Qt 文档中寻找,但找不到合理的解决方案甚至解释。
简化的类定义如下所示。
class LogWriter : public QDialog
{
Q_OBJECT
public:
class Log : public QObject
{
Q_OBJECT
public:
bool print;
Log(bool _print, QString _color, QObject *obj = NULL)
: QObject(obj)
{
print = _print;
color = _color;
}
};
LogWriter(QWidget * parent = 0);
~LogWriter();
public slots:
void setMinVal();
void setMediumVal();
void setHighVal();
void cleanWindow();
void appendText(QString &text);
signals:
void signalLogAppend(QString);
};
我使用以下函数调用将客户端代码中 LogWriter 的实例LOW 的信号连接到某个插槽:
connect(&LOW, SIGNAL(signalLogAppend(QString)),
this, SLOT(appendText(QString&)),
Qt::DirectConnection);
【问题讨论】:
-
LOW是正确的对象类型吗? -
什么是 LOW?缺少一些代码来给你一个正确的分析。
-
LOW代表Log类——我在帖子中提到的内部类
-
不确定
moc是否适合嵌套类定义。
标签: c++ qt qt4 signals-slots