1

我正在关注 Jasmin Blanchettes 书中的第 2 章

C++-GUI-Programming-with-Qt-4-1st-ed.pdf

尝试使用带有 Qt 的 MS VS 2008 设置对话框 GoToCellDialog。

该示例编译,出现对话框,但无法在文本更改上输入处理程序方法 on_lineEdit_textChanged()。为了证明这一点,我在 slot 方法中添加了这一行:

label->setText(tr("Changed :"));

强制在标签中进行视觉更改。

在 .ui 文件中的元素

<connections/>

是空的。我不知道为什么。

我决定将这一行添加到构造函数中:

connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SLOT(on_lineEdit_textChanged()));

但这并没有改变任何东西。

我使用 IDE 生成代码,但首先它生成了小写的 gotocelldialog。现在每个名称都是 camelCase 并且代码可以编译。但也许我错过了什么。

4

1 回答 1

4

我在我的程序中使用了一个函数来确保建立良好的连接:

 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__);
}

这是通常连接的包装器,它会在连接失败时引发断言错误并立即停止程序。好吧,它仅对您使用源代码进行的连接有用。

于 2012-05-07T11:40:14.283 回答