我正在阅读 Jasmin Blanchettes 书的第二章
C++-GUI-Programming-with-Qt-4-1st-ed.pdf
尝试使用带有 Qt 的 MS VS 2008 设置对话框 GoToCellDialog。
示例编译后,出现对话框,但无法在文本更改时输入处理程序方法 on_lineEdit_textChanged() 。 为了证明这一点,我将这一行添加到槽方法中:
label->setText(tr("Changed :"));
强制改变标签的视觉效果。
.ui 文件中的元素
<connections/>
为空。我不知道为什么。
我决定将这一行添加到构造函数中:
connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SLOT(on_lineEdit_textChanged()));
但这并没有改变任何事情。
我使用IDE生成代码,但首先它生成小写的gotocelldialog。 现在每个名称都是驼峰命名法并且代码可以编译。但也许我错过了一些东西。
我在程序中使用了一个函数来确保连接建立良好:
inline void CHECKED_CONNECT( const QObject * sender, const char * signal,
const QObject * receiver, const char * method,
Qt::ConnectionType type = Qt::AutoConnection )
{
if(!QObject::connect(sender, signal, receiver, method, type))
qt_assert_x(Q_FUNC_INFO, "CHECKED_CONNECT failed", __FILE__, __LINE__);
}
这是通常连接的包装器,一旦连接失败,它就会抛出断言错误并停止程序。嗯,它仅对您使用源代码建立的连接有用。